Javascript 在HTMLCollection上迭代

Javascript 在HTMLCollection上迭代,javascript,arrays,htmlcollection,Javascript,Arrays,Htmlcollection,我有一个HTMLCollection,其中包含使用脚本标记的所有HTML节点。我通过constscriptnodes=document.getElementsByTagName('script')收集它们 如果我在Chrome开发工具中记录整个集合,它的长度是10。如果我展开集合并查看其属性,我可以看到超过10个。我甚至可以看到一个名为length的属性,它是12。这意味着有两个属性不可访问 我尝试访问scriptNodes[10]、scriptNodes[11],但它们未定义。即使APIHTM

我有一个HTMLCollection,其中包含使用脚本标记的所有HTML节点。我通过
constscriptnodes=document.getElementsByTagName('script')收集它们

如果我在Chrome开发工具中记录整个集合,它的长度是
10
。如果我展开集合并查看其属性,我可以看到超过10个。我甚至可以看到一个名为
length
的属性,它是12。这意味着有两个属性不可访问

我尝试访问
scriptNodes[10]、scriptNodes[11]
,但它们未定义。即使API
HTMLCollection.nodeItem(index)
返回未定义的属性,我也可以看到这些“额外”属性的内容

我在
中尝试了for..of,for..,但这些都没有被记录

我应该如何访问这些额外/未定义的属性?这与可枚举性有关吗


谢谢

许多浏览器扩展可以向页面添加脚本标记。我猜这就是为什么会出现这些额外的脚本标记。您可能正在加载额外的脚本标记之前的某个时间点访问脚本标记。如果将代码放在setTimeout中,则可能会得到所有脚本节点。试试看,如果是这样,请告诉我们

$(document).ready(function () {
    setTimeout(function () {
        var scriptNodes = document.getElementsByTagName('script');
        console.log('scriptNodes', scriptNodes);
    }, 2000); // or an even longer delay if you like
});

我可以保证没有浏览器扩展在我的html中添加任何脚本。log('scriptNodes',scriptNodes);正在记录所有脚本,但在for循环中,它不会访问这些额外属性。