我正在使用一个脚本,我想在其中选择网页的所有节点
nodes = document.body.getElementsByTagName('*');
但我想排除一个元素,比如#ThisID,以及它的所有子元素
我该怎么做?
最佳答案
您可以使用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
过滤出所需的节点
DEMO
关于javascript - JS : getElementsByTagName get all * but one element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47741151/