我使用创建数组:2种不同长度的数组?
var links = document.getElementsByTagName('a');
如果我做的:
console.log(links.length);
我得到:2
但是,如果我这样做:
console.log(links);
我得到一个看起来像这样的对象:
[a.elm-skip-link,a]
当我展开这个对象时,其中有33个链接对象。
为什么链接对象的长度会改变?如果它是一个数组,它不会保留创建时的大小吗?
这里是我正在使用的代码:
var links = document.getElementsByTagName('a');
console.log('links:');
console.log(links);
console.log('length:');
console.log(links.length);
BTW:我想选择不会有一个“id”或“类”属性页面上的特定链接,这样我需要获取所有链接,然后循环查找具有我要查找的“标题”属性的链接。但是,当我试图循环访问这个“链接”对象时,循环只运行两次,尽管页面上有33个链接。
首先,这不是一个数组,它是[节点列表](https://developer.mozilla.org/en-US/docs/Web/API/NodeList) – WhiteHat
只是一个注释:有一个*文档。链接*集合即页面中的所有链接。一个元素不一定是链接。此外,[* getElementsByTagName *](http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-A6C9094)会返回一个[* NodeList *](http:// www。 w3.org/TR/DOM-Level-3-Core/core.html#ID-536297177),而不是数组。 – RobG
由于HTMLCollection(我不知道)的行为,此问题不是console.log同步或异步问题的重复。我知道console.log不是异步的,但我不知道HTMLCollection对象的特殊行为。 –