javascript - DOM 函数给出了意想不到的结果
问题描述
我的一个导航栏有问题。我想在用户单击它时更改按钮的颜色。但是该功能似乎不起作用。这是指向我的网站的链接,该导航位于:我的网站
这是导航菜单的外观:
// Add active class to the current button (highlight it)
var header = document.getElementById("navbar-complex");
var btns = header.getElementsByClassName("a");
for (var i = 0; i < btns.length; i++) {
btns[i].addEventListener("click", function() {
var current = document.getElementsByClassName("aactive");
current[0].className = current[0].className.replace(" aactive", "");
this.className += " aactive";
});
}
.aactive,
.a:hover {
background-color: #666;
color: white;
}
<div id="navbar-complex" class="scrollmenu tab-content nav nav-tabs">
<a href="#complex_view" class="aactive" data-toggle="tab">{$L_COMPLEX_VIEW}</a>
<a href="#complex_single" data-toggle="tab">{$L_COMPLEX_SINGLE}</a>
</div>
解决方案
a不是您在 中使用的类header.getElementsByClassName("a")
,它是标签名称。您可以使用querySelectorAll()
从标头定位它们。
另外,我会建议你以下几点:
您可以使用
querySelectorAll()
代替,getElementsByClassName()
以便您可以忽略索引。您可以使用
classList.add()
和分别classList.remove()
添加和删除类。
演示:
// Add active class to the current button (highlight it)
var header = document.getElementById("navbar-complex");
var btns = header.querySelectorAll("a");
for (var i = 0; i < btns.length; i++) {
btns[i].addEventListener("click", function() {
var current = document.querySelector(".aactive"); //you can use querySelector to target the element with class aactive
current.classList.remove("aactive"); //now you do not need to use the index
this.classList.add("aactive");
});
}
.aactive, .a:hover {
background-color: #666;
color: white;
}
<div id="navbar-complex" class="scrollmenu tab-content nav nav-tabs">
<a href="#complex_view" class="aactive" data-toggle="tab">COMPLEX VIEW</a>
<a href="#complex_single" data-toggle="tab">COMPLEX SINGLE</a>
</div>
推荐阅读
- javascript - 使用 jQuery datepicker 在 d3 网络中突出显示节点
- reactjs - 为什么我的图像标签出现“意外令牌?
- git - Git将分支合并到父亲并恢复提交
- discord.js - Discord.js V13 使用斜线命令时添加角色
- github - 有哪些方法可以在不下载到本地机器的情况下将数据从 gdrive 导入 colab 并使 notebook 可共享?
- python - 使用python根据某些值过滤嵌套的json
- python - 从字符串中提取数据
- python - numpy 可以对字典对象列表进行排序,还是 pandas 数据框操作是我唯一的选择?
- python - 遍历字符串列表:错误消息
- python - 打开电子邮件时触发Python Outlook win32事件