gpt4 book ai didi

javascript - 查询的 NodeLists 中的 "order"有多可靠

转载 作者:太空狗 更新时间:2023-10-29 13:50:34 24 4
gpt4 key购买 nike

这个话题我想了很久。有问题的方法如下:

  • getElementsByTagName
  • getElementsByClassName
  • getElementsByName
  • querySelectorAll

据我所知,这些 DOM 方法是唯一能够返回卡住或事件 NodeLists 的方法。对于其中一些方法,顺序由 W3C 规范 定义。例如,http://www.w3.orgquerySelectorAll

返回的 NodeLists 写入以下内容

The querySelectorAll() methods on the Document, DocumentFragment, and Element interfaces must return a NodeList containing all of the matching Element nodes within the subtrees of the context node, in document order. If there are no matching nodes, the method must return an empty NodeList.

但是,对于我提到的其他方法,我找不到类似的清晰规范。我的问题是:

  • 是否为结果定义了顺序(很可能是文档顺序)
  • 这些规范的可靠性和跨浏览器实现情况如何

绝对清楚:

<div>this</div>
<div>is</div>
<div>a demo</div>

// is this always guaranteed to be "<div>is</div>"
document.querySelectorAll('div')[1]

最佳答案

是的。所有这些都是按文档顺序/树顺序。

  • getElementsByName ( DOM Level-2-HTML ) 返回一个 NodeList
  • querySelectorAll ( Selectors API ) 返回“按文档顺序”的 NodeList
  • getElementsByTagName ( DOM ) 返回一个 HTMLCollection
  • getElementsByClassName ( DOM ) 返回一个 HTMLCollection

HTMLCollectionsNodeLists都指定有

the elements are sorted in tree order.

当通过 indizes 访问它们时。

我认为所有浏览器都可靠地实现了这些规范(即使链接的版本可能比某些实现更新),主要是因为树顺序是最合乎逻辑且最易于编写代码的顺序。但是,您可能需要注意某些浏览器可能会返回由不同元素 组成的列表,因为它们的节点匹配不同。在确定元素的 name 时,我可能会想到一些怪癖。

关于javascript - 查询的 NodeLists 中的 "order"有多可靠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13102517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com