使用javascript导航的活动链接

时间:2016-10-29 04:13:22

标签: javascript wordpress

我似乎无法弄清楚如何让我的网站导航具有当前页面的活动链接。

这是唯一适合我的代码,但是,“活动”类总是有两个链接。我只希望当前页面处于活动状态。

这是我的代码:

<script>
 function setActive() {
 aObj = document.getElementById('nav').getElementsByTagName('a');
 for(i=0;i<aObj.length;i++) { 
 if(document.location.href.indexOf(aObj[i].href)>=0) {
  aObj[i].className='active';
  }
 }
}

window.onload = setActive;
</script>

以下是我的暂存网站:http://champhero.wpengine.com

感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

a标记href包含完整链接,因此您可以检查如下所示的相等性。

<script>
  function setActive() {
    aObj = document.getElementById('nav').getElementsByTagName('a');
    for(i=0;i<aObj.length;i++) { 
      if(document.location.href === aObj[i].href) {
        aObj[i].className='active';
      }
    }
  }

  window.onload = setActive;
</script>

主页导航链接(http://champhero.wpengine.com/)在每个页面中都会突出显示,因为它出现在所有其他链接中(http://champhero.wpengine.com/pagelink

答案 1 :(得分:0)

<script>
window.onload = function(){
    var anchors = document.getElementsByTagName('a');
    for (var i = 0; i < anchors.length; ++i)
        if (anchors[i].href === window.location.href) 
            anchors[i].className += ' active';
};
</script>

虽然这个片段会将类应用于所有锚点。对于你的导航栏中的那些,给他们一个特定的CSS类来挂钩然后:

<script>
window.onload = function(){
    var nav_links = document.querySelectorAll('.nav-link');
    for (var i = 0; i < nav_links.length; ++i)
        if (nav_links[i].href === window.location.href) 
            nav_links[i].className += ' active';
};
</script>

答案 2 :(得分:0)

您正在检查indexOf。因此,网址http://champhero.wpengine.com/始终包含在http://champhero.wpengine.com/the-enemies/

等其他网址中

如果你只是检查一个相等,它应该工作:

function setActive() {
    var aObj = document.getElementById('nav').getElementsByTagName('a');
    for (var i = 0; i < aObj.length; i++) { 
        if (document.location.href == aObj[i].href) {
            aObj[i].className = 'active';
        }
    }
}

注意:您没有使用'var'声明局部变量,使它们成为全局变量并且可能在整个环境中不稳定。我在我建议的代码中改变了它。