var myArray = [];
myArray = document.querySelectorAll('.selected');
当我调用 myArray.splice - 它是未定义的。我怎样才能避免这种情况?我需要从该数组中删除一些 DOM 元素。
最佳答案
问题是 querySelectorAll(..)
返回一个节点列表 (NodeList
) -- 而不是标准的 JS 数组。
也许你想要像下面这样的东西:
Array.prototype.slice.call(document.querySelectorAll('.selected'), <begin>, <end>);
更新
我错过了您要删除的部分,谢谢@torazaburo。幸运的是,您可以直接在 NodeList 上应用过滤器,而不是通过数组转换。如下所示:
var arrayOfNodes = [].filter.call(document.querySelectorAll(".selected"), function(curNodeItem) {
return shouldCurrentNodeBeRetained(curNodeItem)? true : false;
//expanded for clarity.
});
关于DOM元素数组的Javascript拼接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27637074/