в 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