查询的NodeLists中的“order”有多可靠
我想了解这个话题已经有一段时间了。 有问题的方法如下:
getElementsByTagName
getElementsByClassName
getElementsByName
querySelectorAll
据我所知,这些DOM方法是唯一能够返回冻结或活动NodeLists
。 对于其中一些方法,订单由W3C规范定义。 例如,http://www.w3.org为querySelectorAll
返回的NodeLists
写入以下内容
Document,DocumentFragment和Element接口上的querySelectorAll()方法必须以文档顺序返回包含上下文节点子树内所有匹配元素节点的NodeList。 如果没有匹配的节点,则该方法必须返回一个空的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
(选择器API)以“文档顺序”返回一个NodeList
“ getElementsByTagName
(DOM)返回一个HTMLCollection
getElementsByClassName
(DOM)返回一个HTMLCollection
HTMLCollection
和NodeList
都被指定具有
元素按树顺序排序。
当这些通过指纹访问。
我认为这些规范(即使链接版本可能比某些实现更新)可以由所有浏览器可靠地实现,主要是因为树形顺序是最合乎逻辑和易于编码的规则。 但是,您可能需要注意,某些浏览器可能会返回由不同元素组成的列表,因为它们的节点匹配不同。 确定元素name
时,我会想到一些怪癖。
上一篇: How reliable is "order" in queried NodeLists
下一篇: Can a shift using the CL register result in a partial register stall?