Using querySelectorAll(). Is the result returned by the method ordered?
JavascriptCssCss SelectorsSelectors ApiJavascript Problem Overview
I'm trying to make a js code that works with multiple pages. I'm trying to use querySelectorAll() to obtain the elements form the DOM.
I need the elements to be ordered. In order to do that I may use xPath or selectors (I'd prefer to use selectors but xPath is also ok). The problem is:
Are the elements in the NodeList returned by querySelectorAll() ordered against the order that the tags appear in the HTML?
Note: I'd like to add the tag: querySelectorAll
Javascript Solutions
Solution 1 - Javascript
The returned node list is ordered. A quick test proved it:
document.querySelectorAll("body, head")[0]; //Returned [object HTMLHeadElement]
Obviously, the <head>
tag appears before <body>
in a HTML document. The first element of the NodeList is also a <head>
element, even if the selector shows body
before `head.
From http://www.w3.org/TR/selectors-api/#queryselectorall:
> The querySelectorAll()
method on the NodeSelector interface must, when
> invoked, return a NodeList containing all of the matching Element
> nodes within the node’s subtrees, in document order. If there are no
> such nodes, the method must return an empty NodeList.