getElementsByClassName/Id返回的数组中元素的顺序是否一致?

Is the order of elements in an array returned by getElementsByClassName/Id consistent?

本文关键字:是否 顺序 元素 Id 返回 数组 getElementsByClassName      更新时间:2023-09-26

我想知道在getElementsByclassName()及其同类(例如getElementById())的数组中返回的元素顺序是否一致/有保证或是否依赖于引擎?我在javascript开发人员控制台中执行的基本测试似乎表明它是自上而下

排序的。

看起来基于W3站点,假设一致的顺序是安全的

"让类成为classNames上运行有序集解析器的结果。"

http://www.w3.org/TR/2015/WD-dom-20150428/concept-getelementsbyclassnamehttp://www.w3.org/TR/2015/WD-dom-20150428/concept-ordered-set-parser

编辑:

以上只是@mccc指出的答案的一半。当搜索多个类时,参数内部的顺序无关紧要,但是返回的结果保证是有序的。这是因为返回的集合必须是HtmlCollections,而规范将HtmlCollections定义为树顺序。根据定义,这意味着元素将自顶向下返回。

http://www.w3.org/TR/2015/WD-dom-20150428/concept-tree-order

@mcc还指向了另一个有用的链接,以帮助说明这一点:

http://www.w3.org/TR/2015/WD-dom-20150428/概念系列

所以简而言之,getElementsByClassName()返回的元素将按照自顶向下的顺序排列。