这里总新手。我有一个脚本使用setInterval来过滤列表,并每2秒向每个列表项添加/删除一个类。
如何编辑此脚本以便我可以为每个setInterval循环应用不同的时间?
例如:对于第一个列表项,我希望setInterval(或延迟)为3秒,我想要的第二个列表项为1.5秒,依此类推,直到列表完成为止。 ..我需要每个循环的时间不同。怎么办呢? 非常感谢您的帮助。
$(function() {
var $list = $('#animation li');
$list.filter(':first').addClass('go');
setInterval(function() {
if( $list.filter('.go').index() !== $list.length - 1 ) {
$list.filter('.go').removeClass('go').next().addClass('go');
}
else {
$list.removeClass('go').filter(':first').addClass('go');
}
}, 2000);
答案 0 :(得分:1)
非常原始的例子,但只是显示方法论:
var $list = $('#animation li');
var worker = function(){
//
// perform your process(es)
//
// only continue on if necessary
if (continue_working)
timer = setTimeout(worker, Math.random() * 5 * 1000);
}
var timer = setTimeout(worker, 2000);
// to stop at any time
clearTimeout(timer);
答案 1 :(得分:0)
在setInterval中调用setInterval。
var intervalFunc = new function(){
if( $list.filter('.go').index() !== $list.length - 1 ) {
$list.filter('.go').removeClass('go').next().addClass('go');
}
else {
$list.removeClass('go').filter(':first').addClass('go');
}
// Calculate the next time func
var timeout = ...
setInterval(intervalFunc, timeout);
}
setInterval(intervalFunc, 2000);