如何在Javascript中迭代HTMLCollection
我正在使用:如何在Javascript中迭代HTMLCollection,javascript,arrays,Javascript,Arrays,我正在使用: var links = document.getElementsByTagName('a'); 获取页面上的所有链接。我们需要修改一些 如果我控制台日志链接,我会得到一个100+a元素的HTMLCollection。 如果我输入log links.length,则为0 我已经尝试了所有我能找到的方法来将其转换为数组,但是没有任何效果 Array.from(链接) Array.prototype.slice.call(链接) [].forEach.call(链接,函数(el){…}
var links = document.getElementsByTagName('a');
获取页面上的所有链接。我们需要修改一些
如果我控制台日志链接,我会得到一个100+a元素的HTMLCollection。
如果我输入log links.length,则为0
我已经尝试了所有我能找到的方法来将其转换为数组,但是没有任何效果
Array.from(链接)
Array.prototype.slice.call(链接)
[].forEach.call(链接,函数(el){…})代码>
HTMLCollection.prototype[Symbol.iterator]=Array.prototype[Symbol.iterator]代码>
HTMLCollection.prototype.forEach=Array.prototype.forEach代码>
这些都会生成一个空数组
另外var links=document.querySelectorAll('a')代码>生成一个空节点列表
我已经没有选择了。初始链接变量不是空的。所以我不明白为什么所有这些建议的选项都不起作用。此外,jQuery不是我们的选择。几乎做到了:var linksasasarray=Array.prototype.slice.call(links,0)
另外,您还可以编写一个helper函数,以避免始终需要将节点列表转换为数组。比如说,
function each(elems, fn){
var i = -1;
while(++i < elems.length){
fn(elems[i])
}
}
each(links, function(link){ console.log(link); })
每个功能(元素,fn){
var i=-1;
而(++i<元素长度){
fn(元素[i])
}
}
每个(链接,函数(链接){console.log(链接);})
这对我很有用
var links = document.getElementsByTagName('a');
var result = [].slice.call(links)
Array.from(HTML\u集合).forEach(函数(元素){
控制台日志(元素);
});
您能否在stacksnippets上重现该问题?您的问题在其他地方。顺便问一下,您列出的其他选项也起作用,您确定您的问题不在其他地方吗?我必须将代码移到页脚,这对我来说毫无意义。它能够找到所有的链接,为什么不遍历它们呢?除非代码在页脚区域。。。