对我的一个变量执行 alert() 会给我这个结果
[object NodeList]
我怎样才能看到其中的所有值?
笔记; 我在 Firefox 上,不知道如何使用 chromebug,所以它没有安装。
对我的一个变量执行 alert() 会给我这个结果
[object NodeList]
我怎样才能看到其中的所有值?
笔记; 我在 Firefox 上,不知道如何使用 chromebug,所以它没有安装。
NodeList
您可以以与数组相同的方式迭代值:
for (var index = 0; index < nodeList.length; index++) {
alert(nodeList[index]);
}
这是一个很好的资源,其中包含一些更深入的信息: https ://web.archive.org/web/20170119045716/http://reference.sitepoint.com/javascript/NodeList
更好的选择是不使用警报,因为这将显示对象的 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]));
}
现在我肯定会使用以下内容:
铬、火狐 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)。
更多细节: