javascript - JS : getElementsByTagName get all * but one element

标签 javascript

我正在使用一个脚本,我想在其中选择网页的所有节点

    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/

相关文章:

javascript - Google 跟踪代码管理器点击类事件不起作用

javascript - 使用angularjs获取函数返回值

javascript - Vuex 存储未定义

javascript - emberjs 基础 5 Accordion

JavaScript 对象数组未正确导入

Javascript 操作/转换 JSON

php - jQuery ajax 调用永远不会完成(不会触发成功和错误回调)

javascript - d3 从左侧而不是中心开始缩放

javascript - 如何将支持 Angular 的元素添加到 DOM?

javascript - 高级选择器 - 隐藏父项