我试图将一个类添加到集合中的每个元素。我想在elemnt中添加一个类,然后等待一两秒,然后将该类添加到集合中的下一个类。
但是当我使用这个代码时,它只是将类添加到每个代码中。
for (var i = 0; i < article.length; i++) {
setTimeout(function () {
$(article[i]).addClass('something';
}, 10000);
}
答案 0 :(得分:5)
尝试这样的事情:
(function step(i){
if( i < article.length ){
$(article[i]).addClass('some_class');
setTimeout(function(){ step(i+1) },10000);
}
})(0);
答案 1 :(得分:3)
问题是你在同一时刻设置了10秒的超时时间,因此它们将在10秒后立即执行。您需要将它们链接在一起,以便每个超时处理程序调用下一个超时:
var i = 0;
var callback;
callback = function () {
if (i < article.length) {
$(article[i]).addClass('something');
++i;
setTimeout(callback, 10000);
}
};
setTimeout(callback, 10000);
答案 2 :(得分:0)
您可以使用
var x = setInterval("javascript",ms);
并且每隔“ms”反复调用代码部分中的任何内容,直到你调用
clearInterval(x);
功能
答案 3 :(得分:0)
无需链接呼叫的方法:
for (var i = 0; i < article.length; i++) {
(function(_i) {
setTimeout(function () {
$(article[_i]).addClass('something');
}, 10000+_i*1000);
})(i);
}
添加CSS类的开销几乎不足以使其不能按预期运行。