为什么链接号码不同?

时间:2016-11-29 07:31:02

标签: javascript

我尝试使用JS计算页面中的链接,但得到了不同的结果。为什么会有区别?



var intLNK = document.links.length;
console.log(intLNK);

var intA = document.getElementsByTagName("a").length;
console.log(intA);




5 个答案:

答案 0 :(得分:3)

引自MDN

  

links属性返回文档中所有<area>元素和<a>元素的集合,其中包含href属性的值。

document.getElementsByTagName("a").length;
无论href属性如何,

都将返回锚元素。你可以使用

document.querySelectorAll('a[href]').length

获取具有href属性的锚点数。

如果您对两个人的表现感兴趣,请参阅https://jsperf.com/document-links-vs-document-queryselectorall-a 感谢Robert Weber

答案 1 :(得分:2)

document.links列出了a(和<area>href属性,而您的选择器没有 - 这就是差异。

更多here (mdn)

答案 2 :(得分:1)

因为某些锚a标记缺少href属性

答案 3 :(得分:1)

HTML中用于两个目的的标记。

1)标记文档中的位置。    <A Name = "Section1"> ... </A>

2)对另一个文档或标记进行超链接引用。    < A HREF = "target location"> ... </A>

document.links.length将返回带有 HREF 属性的标记计数,而document.getElementsByTagName("a").length将返回所有A标记的计数,无论是否为链接。

这就是输出不同的原因。

答案 4 :(得分:0)

这是因为第一次你正在寻找所有的href值,但之后你会寻找所有的锚标签。这就是结果不同的原因

如果你想获得所有带有href的锚标签你可以用这样的jquery来做

$('a[href]').length