循环使用JavaScript"getElementsByTagName()"对象

use*_*218 3 html javascript object

如何在选择器上正确循环从"getElementsByTagName()"返回的对象.我似乎无法做对.

例如,如果我有一堆像这样的div:

<div class="wrapper">
<div class="test1">this is a div</div>
<div class="test2">this is a div</div>
<div class="test1">this is a div</div>
<div class="test2">this is a div</div>
<div class="test1">this is a div</div>
<div class="test2">this is a div</div>
</div>
Run Code Online (Sandbox Code Playgroud)

我想循环遍历"getElementsByTagName()"的结果,如下所示:

var wrapper = document.querySelector(".wrapper");

var divs = wrapper.getElementsByTagName("div");

for (i = 0; i < divs.length; ++i) {
   each = divs[i];
   if (each.classList.contains("test2")) {
    this.style.display = "none";
   }
}
Run Code Online (Sandbox Code Playgroud)

这是一个小提琴:http://jsfiddle.net/Y2Yzv/1/

Get*_*etz 6

您在控制台中出错: Uncaught TypeError: Cannot set property 'display' of undefined

尝试:

var wrapper = document.querySelector(".wrapper");

var divs = wrapper.getElementsByTagName("div");

for (i = 0; i < divs.length; ++i) {
   each = divs[i];
   if (each.classList.contains("test2")) {
    each.style.display = "none";
   }
}
Run Code Online (Sandbox Code Playgroud)

演示