Подтвердить что ты не робот

В querySelector: как получить первый и получить последние элементы? какой порядок обхода используется в dom?

в div, имеют элементы (не обязательно 2-го поколения) с атрибутом move_id.

Во-первых, хотелось бы, чтобы самый прямой способ получения первого и последнего элементов набора

попытался получить первый и последний через:

var first = div.querySelector('[move_id]:first');
var last  = div.querySelector('[move_id]:last');

это бомбы, потому что: сначала и: последнее - принятие желаемого за действительное с моей стороны (?)

не может использовать методы массива querySelectorAll, так как NodeList не является массивом:

var first = (div.querySelectorAll('[move_id]'))[0];
var last  = (div.querySelectorAll('[move_id'])).pop();

эта бомба, потому что NodeList не имеет метода pop()

(да, можно было бы использовать методы Array поверх NodeList:

var first = div.querySelector('[move_id]');
var last = Array.prototype.pop.call(div.querySelectorAll('[move_id']));

это работает, и это то, что я сейчас использую, но думаю, что должно быть что-то более прямое, что я просто отсутствую)

Во-вторых, нужно проверить, что элементы перечислены путем предварительного прохода по глубине в соответствии с http://en.wikipedia.org/wiki/Tree_traversal

4b9b3361

Ответ 1

Чтобы получить доступ к первому и последнему элементам, попробуйте.

var nodes = div.querySelectorAll('[move_id]');
var first = nodes[0];
var last = nodes[nodes.length- 1];

Для обеспечения надежности добавьте проверки индексов.

Да, порядок узлов - предварительный порядок глубины - сначала. DOM document order определяется как

Существует упорядочение, порядок документов, определенный на всех узлах документа, соответствующих порядку, в котором первый символ XML-представления каждого node встречается в XML-представлении документа после расширения общих объектов, Таким образом, элемент документа node будет первым node. Узлы элементов встречаются перед их детьми. Таким образом, узлы элементов заказа документов упорядочиваются в порядке появления их стартового тега в XML (после расширения сущностей). Узлы атрибута элемента появляются после элемента и перед его дочерними элементами. Относительный порядок узлов атрибутов зависит от реализации.

Ответ 2

:last не является частью спецификации css, это специфичный jQuery.

вы должны искать last-child

var first = div.querySelector('[move_id]:first-child');
var last  = div.querySelector('[move_id]:last-child');

Ответ 3

Пример получения элемента last:

document.querySelector(".groups-container >div:last-child input")