我正在尝试在不同时间在屏幕上创建一系列不同元素的点击。我可以使用setTimeout函数轻松完成此操作,但我需要将其设置为无限循环!?
以下是我目前处理代码的一个片段。
setTimeout(function () {jQuery('.CR_1').trigger('click');}, 1000);
setTimeout(function () {jQuery('.CR_1').trigger('click');}, 5000);
setTimeout(function () {jQuery('.CR_2').trigger('click');}, 5500);
关于如何使这项工作的任何想法?
编辑:让我更清楚一点。我试图一遍又一遍地以相同的顺序运行这组函数。 setInterval工作得很好。我很抱歉任何困惑。 setInterval ( "flips ()", 12000 );
function flips (){
setTimeout(function () {jQuery('.CR_1').trigger('click');}, 1000);
setTimeout(function () {jQuery('.CR_1').trigger('click');}, 5000);
setTimeout(function () {jQuery('.CR_2').trigger('click');}, 5500);
}
答案 0 :(得分:3)
只需在您的函数中调用setTimeout
即可。
setTimeout(callMe, 1000);
function callMe() {
jQuery('.CR_1').trigger('click');
setTimeout(callMe, 1000);
}
您也可以使用setInterval
,但我更喜欢这样做,因为它将在上次运行时被称为1000毫秒,而不是每1000毫秒,无论运行多长时间(如果进程是同步的)。 / p>
答案 1 :(得分:3)
clicky()
function clicky() {
setTimeout(function () {jQuery('.CR_1').trigger('click');}, 1000);
setTimeout(function () {jQuery('.CR_1').trigger('click');}, 5000);
setTimeout(function () {jQuery('.CR_2').trigger('click');clicky()}, 5500);
}
答案 2 :(得分:1)
为什么不使用setInterval呢?
答案 3 :(得分:1)
我认为您应该使用setInterval
代替setTimeout
答案 4 :(得分:1)
var delayedFunctions = [
[1000,function(){ ... }],
[5000,function(){ ... }],
[5500,function(){ ... }]
];
var fIndex = 0;
function runDelayedFunctions(){
var details = delayedFunctions[fIndex];
setTimeout( function(){
details[1].call(this);
if (++fIndex >= delayedFunctions.length) fIndex=0;
runDelayedFunctions();
}, details[0] );
};
runDelayedFunctions();