lam*_*ade 3 javascript nodelist ecmascript-6 microsoft-edge
在查看ECMAScript兼容性表时,它表示Edge 15和Edge 16支持for ... of循环.
但是,当我运行此代码时:
const list = document.querySelectorAll('[data-test]');
console.log(list);
for (const item of list) {
console.log(item);
}Run Code Online (Sandbox Code Playgroud)
<div data-test></div>
<div data-test></div>
<div data-test></div>
<div data-test></div>
<div data-test></div>Run Code Online (Sandbox Code Playgroud)
它适用于Chrome和Firefox,但不适用于Edge.相反它说:
Object不支持属性或方法'Symbol.iterator'.
据我了解,NodeList实际上应该支持它,对吗?
这是一个自己尝试的fildde:在线测试
有人可以在这里解释问题或错误吗?
Edge确实支持for... of.
它似乎不支持NodeLists上的迭代器.并非所有类似数组的对象都支持迭代器,我不确定NodeLists是否有任何标准说法.
无论如何,for ... of与他们合作很容易:
const list = document.querySelectorAll('[data-test]');
for (const item of Array.from(list)) {
console.log(item);
}Run Code Online (Sandbox Code Playgroud)
<div data-test>a</div>
<div data-test>b</div>
<div data-test>c</div>
<div data-test>d</div>
<div data-test>e</div>Run Code Online (Sandbox Code Playgroud)