我试图制作适用于多个页面的js代码。 我试图使用querySelectorAll()来获取DOM的元素。
我需要订购元素。为了做到这一点,我可以使用xPath或选择器(我更喜欢使用选择器,但xPath也可以)。问题是:
querySelectorAll()返回的NodeList中的元素是否按照标记在HTML中出现的顺序排序?
注意:我想添加标签:querySelectorAll
答案 0 :(得分:39)
已订购退回的节点列表。快速测试证明了这一点:
document.querySelectorAll("body, head")[0]; //Returned [object HTMLHeadElement]
显然,<head>
标记出现在HTML文档中的<body>
之前。即使选择器在head之前显示<head>
,NodeList的第一个元素也是body
元素。
来自http://www.w3.org/TR/selectors-api/#queryselectorall:
NodeSelector接口上的
querySelectorAll()
方法必须在何时 调用后,返回包含所有匹配元素的NodeList 节点子树中的节点,文档顺序 。如果没有 这样的节点,该方法必须返回一个空的NodeList。