我尝试使用JS计算页面中的链接,但得到了不同的结果。为什么会有区别?
var intLNK = document.links.length;
console.log(intLNK);
var intA = document.getElementsByTagName("a").length;
console.log(intA);

答案 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
属性,而您的选择器没有 - 这就是差异。
答案 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