Как создать объект NodeList из двух или более DOMNodes

Например, у меня есть два DOMNode: let node1 = document.querySelector('#node-1'); let node2 = document.querySelector('#node-2');

Как мне объединить их в объект NodeList? Есть ли такое простое решение, как array.push(item)?

3 ответа

Решение

Вы можете добавить оба узла в фрагмент документа:

var docFragment = document.createDocumentFragment();
docFragment.appendChild(node1);
docFragment.appendChild(node2);

И если вы действительно хотите их в NodeList, сделайте:

var list = docFragment.querySelectorAll('*');

Обратной стороной этого является то, что как только вы добавляете узлы к фрагменту документа, вы удаляете их из фактического документа.

Считайте это дополнением к ответу Орра Силони:

Если мы не хотим, чтобы узел был удален из DOM, мы можем добавить копию узла, используя node.cloneNode(),

var nList = document.querySelectorAll('[id^="node"]');

Соберите все узлы с идентификатором, который начинается с "узла".

var nList = document.querySelectorAll('[id^="node"]');
for (var i = 0; i < nList.length; i++) {
  var node = nList[i].id;
  console.log('Node: ' + node);
}
<div id="node-1">node-1</div>
<div id="node-2">node-2</div>
<div id="notnode-3">notnode-3</div>
<div id="check">Check the console (F12, then choose the 'console' tab)</div>

Другие вопросы по тегам