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')のコレクションを取得するか、それらとsを取得するために使用します。<a>document.links<area>

于 2012-06-08T08:42:03.053 に答える