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

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

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

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

问题是你在同一时刻设置了10秒的超时时间,因此它们将在10秒后立即执行。 您需要将它们链接在一起,以便每个超时处理程序调用下一个超时:

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

尝试这样的事情:

  (function step(i){ if( i < article.length ){ $(article[i]).addClass('some_class'); setTimeout(function(){ step(i+1) },10000); } })(0); 

您可以使用

 var x = setInterval("javascript",ms); 

并且它每隔“ms”一次又一次地调用代码部分中的任何内容,直到你调用它为止

 clearInterval(x); 

function

一种无需链接调用的方法:

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

添加CSS类的开销很可能不足以使其不按预期运行。