【问题标题】:Replacement for document.all JavaScript替换 document.all JavaScript
【发布时间】: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


【解决方案1】:

html 的解决方案是document.querySelectorAll("*")

【讨论】:

  • 谢谢,这有帮助!
【解决方案2】:

什么是这种方法的合适的现代替代品,尤其是迭代?

NodeIterator

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 2011-01-16
    • 1970-01-01
    相关资源
    最近更新 更多