如何将元素数组转换为NodeList?

时间:2014-07-21 16:14:17

标签: javascript dom

首先要做的事情是:这不是要求如何将NodeList转换为数组。这恰恰相反。

为了保持一致性,我想创建一个返回NodeList的函数,就像document.querySelectorAll()一样。

这是我目前的代码:

var toNodeList = function(arrayOfNodes){
  var fragment = document.createDocumentFragment();
  arrayOfNodes.forEach(function(item){
    fragment.appendChild(item);
  });
  return fragment.childNodes;
};

但是这会删除DOM中的原始元素!

如何以非破坏性的方式制作NodeList

1 个答案:

答案 0 :(得分:2)

您需要克隆节点。

var toNodeList = function(arrayOfNodes){
  var fragment = document.createDocumentFragment();
  arrayOfNodes.forEach(function(item){
    fragment.appendChild(item.cloneNode());
  });
  return fragment.childNodes;
};

注意将true传递给cloneNode以进行深度克隆。