Javascript, просмотр "объектный список узлов" - PullRequest
7 голосов
/ 30 июля 2011

Выполнение alert () для одной из моих переменных дает мне такой результат

  [object NodeList]

Как мне увидеть все значения в этом?

Примечание;Я использую Firefox и не знаю, как использовать Chromebug, поэтому он не установлен.

Ответы [ 3 ]

8 голосов
/ 30 июля 2011

Вы можете перебирать значения в NodeList так же, как в массиве:

for (var index = 0; index < nodeList.length; index++) {
    alert(nodeList[index]);
}

Вот хороший ресурс с более подробной информацией: http://reference.sitepoint.com/javascript/NodeList

6 голосов
/ 19 октября 2011

Лучшая альтернатива - не использовать alert, поскольку при этом будет отображаться toString () объекта.Использование console.log из FF и Chrome даст вам хороший расширяемый объект, по которому вы можете щелкнуть, чтобы развернуть его

И если вам действительно нужна сериализация, вы можете использовать externalHTML

// Firefox doesn't support outerHTML on nodes, so here's a method that does it
// /845409/kak-mne-sdelat-outerhtml-v-firefox
function outerHTML(node){
    return node.outerHTML || new XMLSerializer().serializeToString(node);
}

for (var index = 0; index < nodeList.length; index++) {
    alert(outerHTML( nodeList[i] ) );
}
2 голосов
/ 15 февраля 2014

В настоящее время я бы определенно использовал следующее:

Chrome, Firefox 3.5+, IE8 +

var elements = document.querySelectorAll('a');

for (var i = 0, element; (element = elements[i]); i++) {
    console.log(element);
}

IE11 +, Firefox 24+, Chrome 30+ (с включенными экспериментами)

let elements = document.querySelectorAll('a');

for (let i = 0, element; (element = elements[i]); i++) {
    console.log(element);
}

"element = elements [i]" предпочтительнее, чем "elements.length", поскольку:

Списки узлов часто реализуются как итераторы узлов с фильтром.Это означает, что получение свойства типа length равно O (n), а итерация по списку путем повторной проверки длины будет O (n ^ 2).

В отличие от доступа к массиву, которыйНасколько я помню O (1).

Подробнее:

...