Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS:getElementsByTagName获取所有*但只有一个元素_Javascript - Fatal编程技术网

Javascript JS:getElementsByTagName获取所有*但只有一个元素

Javascript JS:getElementsByTagName获取所有*但只有一个元素,javascript,Javascript,我正在使用一个脚本来选择网页的所有节点 nodes = document.body.getElementsByTagName('*'); 但是我想排除一个元素,比如ThisID,以及它的所有子元素 我该怎么做呢?你可以用 *将从主体中选择所有元素。 :notselector将过滤掉与所提供选择器相关的元素。 用于排除需要筛选的节点的子节点 var nodes = Array.from(document.body.querySelectorAll('*:not(#ThisID)'));

我正在使用一个脚本来选择网页的所有节点

    nodes = document.body.getElementsByTagName('*');
但是我想排除一个元素,比如ThisID,以及它的所有子元素

我该怎么做呢?

你可以用

*将从主体中选择所有元素。 :notselector将过滤掉与所提供选择器相关的元素。 用于排除需要筛选的节点的子节点

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.
迭代收集的节点,并使用


此解决方案仅排除该元素。。。不是它的孩子?!我想知道我是否应该在生成的数组中删除它们……也许更容易?@Francesco Yeah。我正在研究解决这个问题的办法。我不知道那部分。
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.