3

我正在尝试使用 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 的新手,并且正在学习它。

4

2 回答 2

6

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

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

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

以下是一个链接:

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

链接位于document.linksHTMLCollection 中,因此您可以使用document.links.length.

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

于 2012-06-08T08:42:07.063 回答
3

请参阅MDN 文档中的注释:

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

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

用于document.getElementsByTagName('a')获取<a>元素的集合或document.links获取那些和<area>s

于 2012-06-08T08:42:03.053 回答