javascript - 使用 JavaScript 替换活动类无法正常工作
问题描述
当您选择另一个链接时,它不会删除活动类。它也不会将活动类添加到“单击”链接。
Home 是默认类,点击第三个类。
我试过没有“;” 在脚本的末尾,但仍然显示相同。
这是我的代码:
let navItem = document.querySelectorAll('ul li');
navItem.forEach((item) => {
item.addEventListener("click", () => {
let activeClass = document.querySelector('.active');
activeClass.className = activeClass.className.replace(".active", "");
item.className = "active";
});
});
.navItems {
display: flex;
list-style-type: none;
}
.navItem {
margin: 0 10px;
text-decoration: none;
color: rgb(32, 32, 32);
padding: 10px 20px;
}
.navbar .active {
color: #e54136;
background-color: rgb(32, 32, 32);
}
<div>
<ul class="navItems">
<li><a href="#home" class="navItem active">HOME</a></li>
<li><a href="#services" class="navItem">SERVICES</a></li>
<li><a href="#projects" class="navItem">PROJECTS</a></li>
<li><a href="#ourTeam" class="navItem">OUR TEAM</a></li>
<li><a href="#contact" class="navItem">CONTACT</a></li>
</ul>
</div>
帮帮我!
解决方案
您的代码有几个问题:
- 在 CSS 中,您没有创建正确的选择器
- 在 JavaScript 中,您没有修改正确的元素
let navItem = document.querySelectorAll('ul li a');
navItem.forEach((item) => {
item.addEventListener("click", () => {
document.querySelector('.active').classList.remove('active')
item.classList.add('active')
});
});
.navItems {
display: flex;
list-style-type: none;
}
.navItem {
margin: 0 10px;
text-decoration: none;
color: rgb(32, 32, 32);
padding: 10px 20px;
}
.navItem.active {
color: #e54136;
background-color: rgb(32, 32, 32);
}
<div>
<ul class="navItems">
<li><a href="#home" class="navItem active">HOME</a></li>
<li><a href="#services" class="navItem">SERVICES</a></li>
<li><a href="#projects" class="navItem">PROJECTS</a></li>
<li><a href="#ourTeam" class="navItem">OUR TEAM</a></li>
<li><a href="#contact" class="navItem">CONTACT</a></li>
</ul>
</div>
推荐阅读
- python - 为什么只有一个字符被正确更改?
- android - 已删除的项目仍在 myAdapter 中
- elasticsearch - elasticsearch 包装查询不适用于 base64 编码字符串
- oracle - Oracle APEX 5.1.2:反馈区域
- firebase - 在哪些时间跨度内评估受众?
- entity-framework - 实体框架 - 如何获取包含过滤的子实体集合的实体
- android - Firebase 实时数据库,setValue() 什么都不做
- http - F# HTTP Post,读取状态码响应
- c++ - 初始化派生结构的基础部分/意外打包派生结构字段到基础结构的对齐间隙
- php - 在 mySQL 中查询以随机顺序从每个“目的”11 中选择 44 个问题 PHP/Laravel