【发布时间】:2015-09-29 01:05:03
【问题描述】:
我正在使用 forEach 循环通过 nodeList。我的代码如下
var array = document.querySelectorAll('items');
array.forEach(function (item) {
console.log(item);
});
这段代码抛出了一个错误
未捕获的类型错误:array.forEach 不是函数
然后在阅读了几篇在线博客文章后,我将代码更改为此。
[].forEach.call(array, (function (item) {
console.log(item);
}));
谁能解释一下为什么不能在 nodeList 上调用 forEach 以及上面的第二个代码片段是做什么的。 :)
编辑: 7/25/2017
此问题不适用于现代浏览器。您可以在其中的节点列表上使用 forEach
虽然 NodeList 不是 Array,但可以对其进行迭代 使用 forEach()。它也可以使用转换为数组 Array.from().
但是一些旧的浏览器还没有实现 NodeList.forEach() 也不是 Array.from()。但这些限制可以 通过使用 Array.prototype.forEach() 规避(更多在这个 文件)。
参考:MDN
【问题讨论】:
-
试试这一行NodeList补丁stackoverflow.com/a/32644632/502860
标签: javascript arrays foreach nodelist