当变量达到限制时,jQuery循环重启

时间:2014-10-09 12:45:22

标签: jquery

我有这个jQuery函数,每6,5秒执行一个slideHighs函数:

 initialId=1;

   function autoSlider(){
      setInterval(function() {
         autoId=initialId++;
         slideHighs(autoId);
      }, 6500);
   }

我无法解决2个问题:

  • 加载页面时,我需要此功能才能开始执行第一个 循环(使用autoId val = 1)而不等待6,500毫秒 开始,然后增加到2,3等...每6,500毫秒。我的意思是,避免前6,500间隔。

  • 变量限制为4,当达到时,值必须重新开始为1.

4 个答案:

答案 0 :(得分:2)

我相信这是你正在寻找的。

initialId = 0;

function autoSlider(){
    // use var keyword to prevent declaring the variable on the global namespace
    var autoId = initialId++;
    slideHighs(autoId);
    if ( initialId == 4 ) {
        initialId = 1;
    }
}

要在加载页面时调用autoSlider(),请执行以下操作:

$(document).ready( function() { 
    autoSlider();
    setInterval(autoSlider, 6500);
});

或者,使用$(document).ready()的快捷方法,如下所示:

$(function() { 
    autoSlider();
    setInterval(autoSlider, 6500);
});

答案 1 :(得分:1)

试试这个:您可以先使用setInterval调用位于initialId = 1内的相同代码,然后在setInterval内调查是否initialId值并重置。

var initialId = 1;

//call function outside interval first
autoId=initialId;
slideHighs(autoId);

function autoSlider(){
      setInterval(function() {
         autoId=initialId++;
         slideHighs(autoId);
         //reset variable
         if(initialId>4)
           initialId =0;
      }, 6500);
   }

答案 2 :(得分:1)

initialId = 1;

(function(){  //this will solve first problem
  slideHighs(initialId);
})();


function autoSlider(){
   setInterval(function() {
      if(initialId == 4) initialId =1;  //2nd resolve
      autoId=initialId++;
      slideHighs(autoId);
   }, 6500);
}

答案 3 :(得分:1)

不要使用匿名功能。给它一个名字并在你准备好的dom中使用它:

var initialId = 0; //0 so it prevent the first call to be `2`.

function doSomething() {
     var autoId=initialId++;
     slideHighs(autoId);
}

$(doSomething);//Dom ready shortcut

setInterval(doSomething, 6500); 

至于你的第二个问题,只需使用一个条件:

function doSomething() {
     initialId++;
     if(initialId > 4) initialId = 1;
     var autoId=initialId;

     slideHighs(autoId);
}

注意:autoId非常无用......