【问题标题】:Aren't DOM searches for elements with classes depth first?DOM 不是首先搜索具有类深度的元素吗?
【发布时间】:2020-01-27 21:26:45
【问题描述】:

我的印象是,当浏览器(通常)搜索具有类的元素时,它是深度优先搜索。

最近我被要求为一位同事编写一些代码,并要求我在课堂上使用“webform”子字符串来识别页面上的表单。我知道我测试的页面上有一个表单,并使用了以下 JS:

document.querySelector("[class*=webform]")

但是,这会返回页面的 body 元素,该页面的 class 属性中包含 'webform' 的子字符串。通常(这个问题取决于浏览器)是在 DOM 中搜索包含某个类深度的元素吗?它是完全实现还是依赖于浏览器(如 querySelector 将使用一种方法而另一个函数将使用不同的方法)?

非常感谢。

【问题讨论】:

  • 搜索从文档的根节点开始不是深度优先吗?如果是 html 的网页。
  • 我还应该补充一点,由于querySelector 返回一个匹配项,它将返回它找到的第一个匹配项。在您的情况下,搜索路径将是 <html> → <body>querySelector 可用于任何元素。因此,您应该能够执行 document.body.querySelector() 并找到您的表单(只要 webform 在其他地方不作为一个类存在)。

标签: html css dom search


【解决方案1】:

@hungerstar 是对的。为脑子放个屁道歉,看来我需要在我的树上刷一下了!

所以总而言之,它证明了它是深度优先的。太好了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多