Использование querySelectorAll (). Результат, возвращаемый заказанным методом? - PullRequest
29 голосов
/ 20 ноября 2011

Я пытаюсь создать код js, который работает с несколькими страницами. Я пытаюсь использовать querySelectorAll (), чтобы получить элементы из DOM.

Мне нужно заказать элементы. Для этого я могу использовать xPath или селекторы (я бы предпочел использовать селекторы, но xPath тоже подойдет). Проблема:
Упорядочены ли элементы в NodeList, возвращаемые querySelectorAll (), в порядке, в котором теги появляются в HTML?

Примечание: я хотел бы добавить тег: querySelectorAll

1 Ответ

39 голосов
/ 20 ноября 2011

Возвращенный список узлов упорядочен.Быстрый тест подтвердил это:

document.querySelectorAll("body, head")[0]; //Returned [object HTMLHeadElement]

Очевидно, тег <head> появляется перед <body> в HTML-документе.Первый элемент NodeList также является элементом <head>, даже если селектор показывает body перед `head.

From http://www.w3.org/TR/selectors-api/#queryselectorall:

Метод querySelectorAll()на интерфейсе NodeSelector должен, при вызове, возвращать NodeList, содержащий все совпадающие узлы Элемента в поддеревьях узла, в порядке документов .Если таких узлов нет, метод должен вернуть пустой NodeList.

...