如何按顺序将元素添加到元素集合中?

时间:2012-06-28 18:11:01

标签: javascript jquery

我试图将一个类添加到集合中的每个元素。我想在elemnt中添加一个类,然后等待一两秒,然后将该类添加到集合中的下一个类。

但是当我使用这个代码时,它只是将类添加到每个代码中。

for (var i = 0; i < article.length; i++) {
    setTimeout(function () {
        $(article[i]).addClass('something';
        }, 10000);
    }

4 个答案:

答案 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类的开销几乎不足以使其不能按预期运行。