javascript - 按顺序向数组中的元素添加和删除类

标签 javascript jquery css

对于那些在我重新表述我的问题之前难以理解我的人。我有一个变量数组,对应 5 个 div 的 id。我试图让每个 div 一个接一个地改变颜色几秒钟,但在下一个 div 改变颜色之前颜色又变回来了(类似于交通灯或西蒙游戏上的灯)。我目前正在使用 for 循环来迭代每个数组项。我使用 jQuery 的 .addClass() 和 removeClass() 与 setTimeout 来尝试实现此效果。这是我的代码:

//CSS
.color{background-color: red;}
//JavaScript
var div1 = document.getElementById('divID');
etc...
var total = [div1, div2, div3, div4, div5];
for(var n=0; n<counter; n++){
$(total[n]).addClass("color");
setTimeout(function(){
$(total[n]).removeClass("color");
}, 3000);
}

更新

我找到了解决方案。我将其发布给那些遇到同样问题的人。我使用了 jQuery .delay().queue()创建每个 div 一次接收一个类的效果 .addClass().removeClass() 。感谢大家的帮助。

for(var n=0; n<counter; n++){
flash(n);
}
function flash(num){
var int = num + 1;
$(total[num]).delay(2000 * int).queue(function(){
$(this).addClass("light").delay(1000).queue(function(){
$(this).removeClass("light");
});
$(this).dequeue();
});
}

最佳答案

你可以尝试这样的事情

var color = ['green', 'red', 'yellow'];
var i = 0;
setInterval(function(){
  $('.light').css('background-color', color[i++ % color.length]);
}, 2000);
.light { width: 100px; height: 100px;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="light"></div>

关于javascript - 按顺序向数组中的元素添加和删除类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38579363/

相关文章:

javascript - Facebook 垃圾邮件代码说明

javascript - YouTube 视频 : fit content on non 16:9 father (as background-size: cover)

javascript - 当我将 javascript 代码放入外部 Site.js 文件中时,Ajax pagemethod 不起作用

JQuery 计算子元素并使用 if 语句修改 CSS

CSS 淡入淡出过渡(无 jQuery)

javascript - 模态弹出并提交时如何删除url中的#

javascript - 替代jquery的时候

javascript - 在对话框上显示数据而无需重新加载页面

html - 如何在标题中放置 Logo

jQuery 如何在元素上单击仅隐藏与元素关联的 li 而不是其他元素