jQuery / JS无限定时循环

时间:2011-11-30 18:42:20

标签: javascript jquery

我正在尝试在不同时间在屏幕上创建一系列不同元素的点击。我可以使用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);

    }

5 个答案:

答案 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();