首先要做的事情是:这不是要求如何将NodeList转换为数组。这恰恰相反。
为了保持一致性,我想创建一个返回NodeList的函数,就像document.querySelectorAll()
一样。
这是我目前的代码:
var toNodeList = function(arrayOfNodes){
var fragment = document.createDocumentFragment();
arrayOfNodes.forEach(function(item){
fragment.appendChild(item);
});
return fragment.childNodes;
};
但是这会删除DOM中的原始元素!
如何以非破坏性的方式制作NodeList
?
答案 0 :(得分:2)
您需要克隆节点。
var toNodeList = function(arrayOfNodes){
var fragment = document.createDocumentFragment();
arrayOfNodes.forEach(function(item){
fragment.appendChild(item.cloneNode());
});
return fragment.childNodes;
};
注意将true
传递给cloneNode
以进行深度克隆。