加强网站微信信息编辑队伍建设,网站设计 北京店,莱芜买房网站,网站加地图使用JavaScript的forEach方法#xff0c;我们可以轻松的循环一个数组#xff0c;但如果你认为document.querySelectorAll()方法返回的应该是个数组#xff0c;而使用forEach循环它#xff1a; /* Will Not Work */
document.querySelectorAll(.module).forEach(function() …使用JavaScript的forEach方法我们可以轻松的循环一个数组但如果你认为document.querySelectorAll()方法返回的应该是个数组而使用forEach循环它 /* Will Not Work */
document.querySelectorAll(.module).forEach(function() {});执行上面的代码你将会得到执行错误的异常信息。这是因为document.querySelectorAll()返回的不是一个数组而是一个NodeList。 对于一个NodeList我们可以用下面的技巧来循环遍历它 var divs document.querySelectorAll(div);[].forEach.call(divs, function(div) {// do whateverdiv.style.color red;
});当然我们也可以用最传统的方法遍历它 var divs document.querySelectorAll(div), i;for (i 0; i divs.length; i) {divs[i].style.color green;
}还有一种更好的方法就是自己写一个 // forEach method, could be shipped as part of an Object Literal/Module
var forEach function (array, callback, scope) {for (var i 0; i array.length; i) {callback.call(scope, i, array[i]); // passes back stuff we need}
};// 用法:
// optionally change the scope as final parameter too, like ECMA5
var myNodeList document.querySelectorAll(li);
forEach(myNodeList, function (index, value) {console.log(index, value); // passes index value back!
});还有一种语法for..of 循环但似乎只有Firefox支持 /* Be warned, this only works in Firefox */var divs document.querySelectorAll(div );for (var div of divs) {div.style.color blue;
}最后是一种不推荐的方法给NodeList扩展一个forEach方法 NodeList.prototype.forEach Array.prototype.forEach;var divs document.querySelectorAll(div).forEach(function(el) {el.style.color orange;
})转载于:https://www.cnblogs.com/xupeiyu/p/5067115.html