【发布时间】:2017-08-05 01:52:46
【问题描述】:
编辑:更清楚地说,我正在尝试使导航栏按钮在您所在的任何页面上都处于活动状态。
我在这里有一个不错的小导航栏,当您在导航栏上的每个页面上时,我正在尝试使 ul/li 类处于活动状态。但是由于某种原因,它根本不起作用。
这是我的导航:(包括我尝试运行的 javascript)
var selector, elems, makeActive;
selector = '.nav-link';
elems = document.querySelectorAll(selector);
makeActive = function () {
for (var i = 0; i < elems.length; i++)
elems[i].classList.remove('active');
this.classList.add('active');
};
for (var i = 0; i < elems.length; i++)
elems[i].addEventListener('mousedown', makeActive);
<!-- Start Navigation -->
<nav class="navbar navbar-light bg-faded">
<button class="navbar-toggler hidden-sm-up" type="button" data-toggle="collapse" data-target="#navbar-header" aria-controls="navbar-header">
☰
</button>
<div class="collapse navbar-toggleable-xs" id="navbar-header">
<a class="navbar-brand" href="#">A Trainers Best Friend</a>
<ul class="nav navbar-nav pull-xs-right">
<li class="nav-item">
<a class="nav-link" href="home.php">Home <span class="sr-only"></span> <i class="fa fa-home" aria-hidden="true"></i></a>
</li>
<li class="nav-item">
<a class="nav-link" href="clients.php">Clients <i class="fa fa-address-book" aria-hidden="true"></i></a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Schedule <i class="fa fa-calendar" aria-hidden="true"></i></a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Session Manager <i class="fa fa-handshake-o" aria-hidden="true"></i></a>
</li>
<li class="nav-item">
<a class="nav-link" href="logout.php">Logout <i class="fa fa-sign-out" aria-hidden="true"></i></a>
</li>
</ul>
</div>
</nav>
<!-- End Navigation -->
您可能会看到我的 js 无法正常工作。我尝试将我的选择器更改为 .nav、.nav-link、.nav li,但似乎没有任何工作可以完成。任何帮助将不胜感激。
【问题讨论】:
-
你说“当你在每一页上”。这是否意味着导航栏按钮对于您所在的任何页面都是活动的,因为在
mousedown上触发该功能不会这样做。 -
对我所在的任何页面,导航栏按钮都处于活动状态。单击链接时不会触发mousedown吗?我对 Javascript 真的很陌生。对此感到抱歉-也许您可以为我指明正确的方向?此外,我将更新我的问题以更清楚。
-
mousedown事件在用户的鼠标在指定元素上按下时触发。用户点击链接时不会触发。 -
要拥有活动按钮,您可以手动将
active类手动添加到每个页面的按钮 -
或者,您可以解析 URL 并将活动类动态添加到与 URL 匹配的任何按钮
标签: javascript html bootstrap-4