JavaScript document.anchors.length 在 Firefox 中返回 1

javascript document.anchors.length returning 1 in firefox

本文关键字:返回 Firefox document anchors length JavaScript      更新时间:2023-09-26

我正在尝试使用 javascript 在页面中运行 6 个锚点的列表,以对它们进行一些操作。但是,循环没有被执行,因为 anchors.length 返回 1。以下是我的代码片段:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript">
function load()
{
alert(document.anchors.length);
for (i = 0; i <= document.anchors.length; i++)
    {
        alert(document.anchors[i].innerHTML);
    }
}
</script>
</head>
<body onload="load()">
<div>        
<ul>
<a id="sectionlinks" href="page1.html">link 1</a></li>
<a id="sectionlinks" href="page2.html">link 2</a></li>
<a id="sectionlinks" href="page3.html">link 3</a></li>
<a id="sectionlinks" href="page4.html">link 4</a></li>
<a id="sectionlinks" href="page5.html">link 5</a></li>
<a id="sectionlinks" href="page6.html">link 6</a></li>
<ul>
</div>
</body>
</html>

这在IE9中工作正常。但是在Firefox和Chrome中,它说计数等于1。如果有人能指出我在这里错过了什么,那就太好了。

正如您可能已经猜到的那样,我是JS的新手,只是在学习它。

至少,你正在以正确的方式学习,继续前进!

您做错的是document.anchors引用锚链接(使用 name 属性的旧锚链接),而不是普通链接。例如,下面是一个定位点:

<a name="tab"></a>

以下是链接:

<a href="/some/link"></a>

这些链接位于 document.links HTML 格式中,因此您可以使用 document.links.length

如果要获取所有<a>元素,无论其属性中有什么,都可以使用 document.getElementsByTagName( 'a' ).length

请参阅 MDN 文档中的注释:

出于向后兼容性的原因,返回的定位点集仅包含使用 name 属性创建的定位点,不包含使用 id 属性创建的定位点。

该属性旨在查找要链接到的锚点,而不是从中。

使用 document.getElementsByTagName('a') 获取<a>元素的集合,或document.links来获取这些元素和<area>