【发布时间】:2014-09-12 05:36:29
【问题描述】:
首先要做的事:这不是问如何将 NodeList 变成一个数组。这是相反的。
为了保持一致性,我想创建一个返回 NodeList 的函数,就像 document.querySelectorAll() 所做的那样。
这是我当前的代码:
var toNodeList = function(arrayOfNodes){
var fragment = document.createDocumentFragment();
arrayOfNodes.forEach(function(item){
fragment.appendChild(item);
});
return fragment.childNodes;
};
但是,这会从 DOM 中删除原始元素!
如何以无损方式制作NodeList?
【问题讨论】:
-
嗨@DominicTobias,我的意思是arrayOfNodes(之前生成的)内的节点正在从DOM中删除。
-
不知道为什么你需要一个 nodeList,但是你去 -> jsfiddle.net/dzu2m
-
@adeneo Hrm,为每个元素添加一个临时类,运行 querySelectorAll() 然后删除该类。它有效,但显然有点hacky。
-
你不能真正创建一个nodeList,只有native方法可以,所以获得一个带有DOM元素的nodeList的唯一方法就是选择它们,给元素添加一些独特的东西是最简单的方法这样做。
-
@adeneo 你有引用吗?如果是这样,请将其添加为答案。
标签: javascript dom