javascript - Javascript 切换类未按预期工作 | 没有jQuery
问题描述
我想让类名“活动”从第一个兄弟姐妹开始,并在每 2 秒后切换到下一个兄弟姐妹。在最后一个兄弟之后,它应该回到第一个。目前,它将类名添加到每个兄弟姐妹,然后开始以 2 秒的间隔顺序将其从它们中删除。
<body>
<div class="list">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>
<script type="text/javascript">
var i = 0;
function toggle() {
var boxes = document.querySelectorAll('.box');
boxes[i].classList.toggle("active");
i++;
if (i >= boxes.length) {
i = 0;
}
}
setInterval(toggle, 2000);
</script>
</body>
解决方案
您应该每次都从当前活动元素(如果有的话)中删除活动类。
var i = 0;
var boxes = document.querySelectorAll('.box');
function toggle() {
document.querySelector('.active')?.classList.remove('active');
boxes[i].classList.add("active");
i = (i + 1) % boxes.length;
}
setInterval(toggle, 2000);
.box {
background-color: blue;
height: 50px;
border: 5px solid black;
}
.active {
background-color: yellow;
}
<div class="list">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>
<script type="text/javascript">
var i = 0;
var boxes = document.querySelectorAll('.box');
function toggle() {
document.querySelector('.active')?.classList.remove('active');
boxes[i].classList.add("active");
i = (i + 1) % boxes.length;
}
setInterval(toggle, 2000);
</script>
推荐阅读
- youtube - 使用 iptables 阻止 YouTube 视频
- spring-boot - 如何从 Spring Cloud 配置服务器中的远程 git repo 获取 propertySources?
- r - 在 R 中使用 int64 nanotimes 作为数组 dimnames
- linguijs - 从 webtranslateit.com 为 LinguiJS 选择哪种目录格式可以与复数一起使用?
- java - 有没有办法在android studio(java)中覆盖文本
- cloudinary - AssertionError [ERR_ASSERTION]:无法包装非错误对象
- css - 在 Wordpress 导航菜单中的文本上添加圆角矩形 css
- java - Selenium java代码成功运行测试,但在无头运行时失败
- android - viewPager 和数据绑定 android
- java - 如何在浏览器中从excel中一一读取和运行多个URL