jquery to vanilla js; 每个循环的html标签

har*_*tio 1 html javascript arrays jquery dom

所以这是我当前的jquery代码,我想在vanilla js中.

var elems = [];

$("*").not('script, style, iframe').each(function() {
    elems.push($(this)[0]);
});
Run Code Online (Sandbox Code Playgroud)

我找到的最接近的替代方案是 document.getElementsByTagName("*") 但仍然有iframe,样式和脚本标签,我不希望在我的阵列中.

另外,我不能仅仅通过它们的标记名称删除它们,因为它们可能具有与它们相关联的id或类.

Jos*_*ier 6

一种选择是使用CSS选择器和.querySelectorAll()方法.

由于CSS有一个:not()伪类,你可以用它来否定script,styleiframe元素.

var elements = document.querySelectorAll('*:not(script):not(style):not(iframe');
Run Code Online (Sandbox Code Playgroud)

在上面的代码段中,elementsNodeList包含所选元素的集合.