循环/使用setinterval遍历多个函数?

4
问题是,我有4个函数,我希望每5秒钟按顺序运行一次,但我不确定该如何进行操作。我知道代码效率很低。(目前我将代码设置为这样的原因是因为这些函数也可以通过点击按钮来触发)
function tScroll1(){
    var $testimonialScrollPos = parseInt($tCont.css('top'), 10);
    if($testimonialScrollPos == -915){
        $tCont.css('top','305px');  
        $tCont.animate({top:'0px'},700);
        }
        else{
            $tCont.animate({top:'0px'},700);
            }
    };
function tScroll2(){
        $tCont.animate({top:'-305px'},700);
    };
function tScroll3(){
        $tCont.animate({top:'-610px'},700);
        };
function tScroll4(){
        $tCont.animate({top:'-915px'},700);
        };
$tBtns.eq(0).click(function(){tScroll1()});
$tBtns.eq(1).click(function(){tScroll2()});
$tBtns.eq(2).click(function(){tScroll3()});
$tBtns.eq(3).click(function(){tScroll4()});     

任何帮助都非常感激 :].

你这里看起来像是一个旋转木马。为什么不使用现成的呢? - Jon
1个回答

15

只需编写一个调用其他功能的函数:

window.setInterval(function(){
  tScroll1();
  tScroll2();
  tScroll3();
  tScroll4();
}, 5000);

如果你想按照轮换的顺序逐个调用它们,请将它们放入一个数组中并保持数组索引:

var intervalFunctions = [ tScroll1, tScroll2, tScroll3, tScroll4 ];
var intervalIndex = 0;
window.setInterval(function(){
  intervalFunctions[intervalIndex++ % intervalFunctions.length]();
}, 5000);

1
谢谢!第二个完美地运行了。数组绝对是我的弱点,这帮了我很多。 - Dim Panda
+1,以涵盖问题的两种可能解释。 - nnnnnn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接