Javascript, просмотр " object nodelist"

выполнение alert () На одной из моих переменных дает мне этот результат

  [object NodeList]

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

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

3 ответов


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

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

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


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

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

// Firefox doesn't support outerHTML on nodes, so here's a method that does it
// http://stackoverflow.com/questions/1700870/how-do-i-do-outerhtml-in-firefox
function outerHTML(node){
    return node.outerHTML || new XMLSerializer().serializeToString(node);
}

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

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

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 равно O (n) и повторение список путем повторной проверки длины будет O (n^2).

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

Подробнее: