我正在使用一个脚本,我想要选择网页的所有节点
nodes = document.body.getElementsByTagName('*');
但我想排除一个元素,比如说#ThisID,所有孩子
我该怎么做?
答案 0 :(得分:5)
您可以使用querySelectorAll
,
nodes = document.body.querySelectorAll('*:not(#ThisID)');
*
将选择身体中的所有元素。:not(selector)
将过滤掉与提供的选择器相关的元素。要排除需要过滤的节点的子节点,
var nodes = Array.from(document.body.querySelectorAll('*:not(#ThisID)'));
var filter = document.querySelector("#ThisID");
nodes = nodes.filter(function(node) {
return !filter.contains(node);
});
console.log(nodes); // This will not contain the node #test1 as well its children.
迭代收集的节点,并使用.contains