我想制作一个滑块。
我有5个功能,我想运行第一个功能,5秒后第二个功能,5秒后第三个功能,依此类推。
当第5个功能运行时,等待5秒钟再次运行第一个功能并重复循环;
我尝试过使用SetInterval,但我不知道在那里写什么价值来匹配我刚才所说的内容。
的setInterval(img1,5000);
的setInterval(img2,3000);
的setInterval(img3,4000);
的setInterval(img4,9000);
的setInterval(img5,9000);
有人有同样的问题吗?
答案 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循环访问它们。尝试在控制台中运行它。您将看到它执行每个函数,然后再次启动循环过程。
这样,如果您添加更多功能,例如img6
,img7
等,您就不必重构哪一个再次启动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);