Как создать объект 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>