【发布时间】:2011-02-23 06:32:38
【问题描述】:
我需要将 NodeList 对象转换为数组 - 在本例中是 <div> 元素的列表,因为我需要使用 map() 和 filter() 方法来优化它。
不幸的是,在 Firefox(我测试了 3.6 和 4)中,我使用的方法引发了以下错误:
Error: setting a property that only has a getter
以下代码是相关行的精简版本。
trackList = [].splice.call(videoElement.querySelectorAll("div"),0);
这在 Chrome 和 Safari 中运行良好。它似乎与querySelectAll 方法无关,因为无论如何获得NodeList(例如使用document.getElementsByTagName("div"))都会出现同样的问题。
问题似乎出在call() 方法本身 - 给定一个预先存在的NodeList 并引用Array.prototype.slice 方法,以下仍然会失败:
sliceMethod.call(myNodeList,0);
不用说,我很难过 - 任何帮助或建议将不胜感激。
更新
这原来是一个印刷错误 - slice 而不是 splice 是有意的。
【问题讨论】:
标签: javascript arrays firefox