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

时间:2014-08-13 12:42:14

标签: javascript arrays

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

1 个答案:

答案 0 :(得分:2)

看起来基于W3网站,假设一致的订单

是安全的

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

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

编辑:

上述答案仅为@mccc指出的答案的1/2左右。在搜索多个类时,命令在参数内部无关紧要,但返回的结果保证是有序的。这是因为重新归档的集合需要为HtmlCollections,并且规范将HtmlCollections定义为Tree Order。根据定义,这意味着元素将自上而下返回。

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

@mcc还指出了另一个有用的链接,以帮助推动这一点:

http://www.w3.org/TR/2015/WD-dom-20150428/#concept-collection

简而言之,getElementsByClassName()返回的元素将按自上而下的顺序排列。