Jquery更多函数之间的时间间隔

时间:2014-08-31 15:11:43

标签: jquery slider setinterval

我想制作一个滑块。

我有5个功能,我想运行第一个功能,5秒后第二个功能,5秒后第三个功能,依此类推。

当第5个功能运行时,等待5秒钟再次运行第一个功能并重复循环;

我尝试过使用SetInterval,但我不知道在那里写什么价值来匹配我刚才所说的内容。

的setInterval(img1,5000);

的setInterval(img2,3000);

的setInterval(img3,4000);

的setInterval(img4,9000);

的setInterval(img5,9000);

有人有同样的问题吗?

3 个答案:

答案 0 :(得分:0)

setInterval在给定时间的计时器上重复给定的函数。我不认为这就是你要找的东西。我想你正在寻找setTimeout。

setTimeout(function1, 5000); // execute function1 after 5000 milliseconds

然后你应该像这样定义function1:

function function1() {
    // do stuff
    setTimeout(function2, 5000);
}

以及所有5个功能。

然后你可以让function5调用function1来重启链。更多信息可以在Here

找到

答案 1 :(得分:0)

如果将函数存储在数组中,可以使用for循环访问它们。尝试在控制台中运行它。您将看到它执行每个函数,然后再次启动循环过程。

这样,如果您添加更多功能,例如img6img7等,您就不必重构哪一个再次启动Timeout循环。

var img1 = function() { console.log('1'); }
var img2 = function() { console.log('2'); }
var img3 = function() { console.log('3'); }
var img4 = function() { console.log('4'); }
var img5 = function() { console.log('5'); }
var functions = [img1,img2,img3,img4,img5];

var loop = function() { 
    for(var i=0; i < functions.length; i++) {
        (function(i) {
            setTimeout(function() {
                functions[i]();
            }, 5000 * i);
        })(i);
    }
setTimeout(loop,(5000*(functions.length)));
}
loop();

答案 2 :(得分:0)

你应该按照这些方针做点什么:

var fnOrig = [
     function() {
         // do first action
     },
     function() {
         // do second action
     }
     // keep defining functions
 ],
 fnCopy = fnOrig.slice(0);

 setTimeout(function() {
     if (!fnCopy.length) 
         fnCopy = fnOrig.slice(0);
     fnCopy.pop()();
 }, 5000);