使用纯 javascript 获取 body 标签中的所有元素

IT技术 javascript html
2021-03-10 00:56:46

我正在尝试使用纯 javascript 获取数组中 HTML 页面的 Body 标记内的所有元素(标记)。我的意思是不使用任何框架(例如 JQuery)。

我发现您可以使用,document.all但这将返回整个文档中的所有元素,包括脚本。

无论如何我可以获得这些标签吗?

2个回答

如果您想要 body 标签内的所有元素,而不仅仅是一级子元素,您可以简单地使用getElementsByTagName()通配符:

var elems = document.body.getElementsByTagName("*");
@kkDev - 如果您在文档加载后调用它(因此当 DOM 存在时),它就可以工作。有关工作演示,请参阅jsfiddle.net/jfriend00/kKk3X
2021-05-10 00:56:46
由于未知原因,它返回一个空值
2021-05-15 00:56:46

你可以用document.querySelectorAll()它。

如果你真的想要所有(包括嵌套标签),使用这个

 var elements = document.querySelectorAll( 'body *' );

如果您只想要直接子节点,请使用

 var elements = document.querySelectorAll( 'body > *' );
需要注意的是,querySelectorAll()getElementsByTagName()不同的返回类型querySelectorAll返回一个NodeList,而getElementsByTagName返回一个HTMLCollection更多关于两者之间的区别在这里:HTMLCollection, NodeLists, and array of objects之间的区别
2021-04-24 00:56:46
@RobW:……和更多的跨浏览器兼容
2021-05-11 00:56:46
user1689607 发布了一个建议的答案.children(出于某种原因,他删除了它)。.children与此答案中建议的方法相比,我更喜欢该属性,因为它更简洁、更明显(.children与 QSA / getElementsByTagName("*"). And, after all, the 儿童属性相反,因为它应该在寻找子元素时使用.children不包括文本)节点等(但它包括 <=IE8 (bug) 中的注释节点)。(Bergi 是对的,从 IE 8 开始支持 QSA)。
2021-05-11 00:56:46
document.body.getElementsByTagName('*') 性能可能更高。
2021-05-20 00:56:46