Javascript getElementsByClassName/Id返回的数组中元素的顺序是否一致?
我想知道Javascript getElementsByClassName/Id返回的数组中元素的顺序是否一致?,javascript,arrays,Javascript,Arrays,我想知道getElementsByclassName()及其同类(例如getElementById())的数组中返回的元素顺序是否一致/有保证,或者是否依赖于引擎?我在javascript开发人员控制台中执行的基本测试似乎表明,它是从上到下排序的。看起来基于W3站点,假设顺序一致是安全的 “让类成为对类名运行有序集解析器的结果。” 编辑: 正如@mccc所指出的,上述答案仅为答案的1/2左右。当搜索多个类时,参数内部的顺序并不重要,但是返回的结果是有序的。这是因为重新调用的集合要求是Html
getElementsByclassName()
及其同类(例如getElementById()
)的数组中返回的元素顺序是否一致/有保证,或者是否依赖于引擎?我在javascript开发人员控制台中执行的基本测试似乎表明,它是从上到下排序的。看起来基于W3站点,假设顺序一致是安全的
“让类成为对类名运行有序集解析器的结果。”
编辑:
正如@mccc所指出的,上述答案仅为答案的1/2左右。当搜索多个类时,参数内部的顺序并不重要,但是返回的结果是有序的。这是因为重新调用的集合要求是HtmlCollections,并且规范将HtmlCollections定义为按树的顺序。根据定义,这意味着元素将自顶向下返回
@mcc还指出了另一个有助于推动这一观点的链接:
因此,简而言之,
getElementsByClassName()
返回的元素将是自上而下的顺序。您可以检查和查看浏览器compatibility@Huangism我已经说过了,但它没有提到数组的内容或顺序是否得到保证。这就是我想知道的,它将根据html顺序获取元素。就像你自上而下说的,假设在收集过程之后没有添加或删除元素那么你回答了你自己的问题我在javascript开发者控制台中执行的基本测试似乎表明它是从上到下排序的
@Troy是的,我这样做了。当时我用最新的浏览器进行了测试,但我不能确定旧的浏览器是否受当时浏览器的标准或最新法规的约束。不过,这是指类,这意味着类名(调用的参数)被解析为有序列表,这本身意味着参数顺序无关紧要,如中所示。不幸的是,问题依然存在。是的,参数顺序似乎并不重要,但如果你深入研究HtmlCollections,它会说它是按树的顺序返回的。这不保证跨浏览器排序吗?啊,是的,你说得对:报纸上是这么说的!尽管如此,不是你在回答中所说的:“可能会考虑编辑……我同意:”当我再次在电脑上时,我会更新它。谢谢你推动我进一步挖掘!