9

对我的一个变量执行 alert() 会给我这个结果

  [object NodeList]

我怎样才能看到其中的所有值?

笔记; 我在 Firefox 上,不知道如何使用 chromebug,所以它没有安装。

4

3 回答 3

11

NodeList您可以以与数组相同的方式迭代值:

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

这是一个很好的资源,其中包含一些更深入的信息: https ://web.archive.org/web/20170119045716/http://reference.sitepoint.com/javascript/NodeList

于 2011-07-30T02:50:15.900 回答
7

更好的选择是不使用警报,因为这将显示对象的 toString()。使用 FF 和 Chrome 中的 console.log 会给你一个很好的可扩展对象,你可以点击它来钻取它

而且如果真的需要序列化,可以使用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[index]));
}
于 2011-10-19T17:42:17.397 回答
2

现在我肯定会使用以下内容:

铬、火狐 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)。

更多细节:

于 2014-02-15T09:40:14.857 回答