Aus*_*ust 9 javascript arrays dom prototype nodelist
据我所知,IE8可以访问该Array.prototype.slice方法.然而,当我试图将它NodeList变成一个数组时,它给了我错误Array.prototype.slice: 'this' is not a JavaScript object.你可以在这里查看,或者在这里查看我的代码:
HTML
<div id="test">Test</div>
Run Code Online (Sandbox Code Playgroud)
JavaScript的
var divs = document.getElementsByTagName('div');
divs = Array.prototype.slice.call(divs);
console.log(divs);
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
更新:A NodeList可以在某些方面被视为一个数组 - 在你可以循环之前,你实际上不必对它做任何特殊的事情,例如:
var aDivs = [];
for (var = i = 0; i < divs.length; i++) {
aDivs.push(divs[i]);
}
Run Code Online (Sandbox Code Playgroud)
这将创建一个包含运行时匹配的所有节点的数组 document.getElementsByTagName()
请参阅此问题,以获得有关为什么在某些浏览器中使用而不是在其他浏览器中slice工作的完整解释NodeList,但它从规范中归结为这句话:
切片功能是否可以成功应用于主机对象取决于实现.