遍历选定元素的列表

如何遍历 NodeList 并对每个元素执行某些操作


这里有几种遍历选定元素列表的方式。 首先了解下 for() 循环:


var divs = document.querySelectorAll('div'), len = divs.length;

for (var i=0; i<len; i++) {
    divs[i].style.color = "green";
}
      

如您所见,NodeList 的长度是在循环之前确定的。 这种方法比在for语句中使用 divs.length 更快,因为否则每次迭代都会重复读取该长度。

另外 while()循环是另外一种更高效的方法,并且代码量更少:


var divs = document.querySelectorAll('div'), i = divs.length;
while (i--) {
    divs[i].style.color = "green";
}
      

最后,您可以使用这便捷方法,类似于jQuery的 $.each()方法:


var divs = document.querySelectorAll('div');

[].forEach.call(divs, function(item) {
    item.style.color = "green";
});
      

在现代浏览器(不支持IE)中,您也可以这样简单地执行以下操作:


var divs = document.querySelectorAll('div');

divs.forEach(function(item) {
    item.style.color = "green";
});