【发布时间】:2021-08-14 22:44:33
【问题描述】:
Visual Studio Code 和 Mozilla Web Docs 都告诉我 document.all 已被弃用,不应在新网站中使用,例如我的网站。
不过,document.all 似乎有一个非常重要的用途:获取文档中每个节点及其子节点的列表(用于操作当前 HTML 页面,或在解析 XML 文件或字符串时)。
我看到a lot of advice 建议使用document.getElementById。但这只能解决使用带有索引的document.all 来获取一个元素的问题(这显然是一种不好的做法。)这绝不提供简单地获取 DOM 中每个元素及其子元素的列表的解决方案,尤其是迭代。
什么是这种方法的合适的现代替代品?
【问题讨论】:
-
document.querySelectorAll("*")怎么样? -
document.querySelectorAll("*")在此页面上返回与document.all完全相同的元素数。 -
@NatRiddle 但是迭代查找多个元素也会很奇怪。通常你会使用嵌套循环解析你的 XML,可能是递归,从根节点开始。
-
@NatRiddle 不使用递归函数的问题意味着你无法真正区分递归结构
-
@NatRiddle 还有一个
TreeWalker你可能想看看。但是递归函数是处理递归结构的更自然的方法。如果您提出有关您想要执行的实际数据处理的新问题,并以您的 xml 示例为例,我们可能会提出更具体的解决方案
标签: javascript dom iteration