1

编辑:我怀疑问题必须这样做,因为我所有的 # 锚都在同一页面上,除非我重新加载页面,否则 JavaScript 不知道我对链接的点击。虽然我不知道如何解决这个问题......:(

如果显示了它指向的部分,我正在尝试使单击的链接保持蓝色。这是代码(按照本教程的建议,我将 Javascript 代码放在结束正文标记之前)。

HTML

<ul id="menu">
    <li><a href="#section1">section1</a></li>
    <li><a href="#section2">section2</a></li>
    <li><a href="#section3">section3</a></li>

JavaScript

links = document.getElementById("menu").getElementsByTagName("a");

for(i=0; i<links.length;i++) {
   if(links[i].href == window.location.hash) {
   links[i].className = "active";
    }
}

CSS

a.active {
    color:blue;
}

但是,它似乎不起作用。任何人都可以帮忙吗?谢谢!

4

3 回答 3

3

您的锚标签未关闭,请确保它们看起来像这样:

<a href="#section1">Link Text</a>

注意关闭"并且>您的代码丢失了。

另外,您是否将 JavaScript 代码包装在一个<script>块中?

  <script>
    all of your javascript inside of this script block
  </script>
</body>
于 2012-04-19T12:59:41.913 回答
2

在这种情况下,您的 href 可能是绝对的,而不仅仅是哈希:

   if(links[i].href == window.location.hash)
于 2012-04-19T13:01:46.700 回答
1

也许您需要将脚本放在函数中,将其链接到标头中,然后在加载时调用它。

function f(){
  var links = document.getElementById("menu").getElementsByTagName("a");

  for(i=0; i<links.length;i++) {
     if(links[i].href == window.location.hash) {
     links[i].className = "active";
      }
  }
}

<body onload="f()">

还要注意var links = ...声明的含义。

于 2012-04-19T13:00:02.673 回答