Using querySelectorAll(). Is the result returned by the method ordered?

JavascriptCssCss SelectorsSelectors Api

Javascript 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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionbrunoaisView Question on Stackoverflow
Solution 1 - JavascriptRob WView Answer on Stackoverflow