一旦它击中最后一张幻灯片,我怎样才能重启循环?

时间:2013-09-25 13:48:48

标签: jquery

我将这些指示符链接到每张幻灯片,但是当我到达第11张幻灯片时,如果我再次继续在幻灯片中循环,则会停止。我需要它在12点击中之后回到一个。可以任何人帮助。

for (var i = 1; i <= 12; i++) {
    if (jQuery('#slide-' + i).is(':visible')) {
    console.log('#slide-' + i);
    jQuery('#page_count-' + i).addClass('active');
} else {
    jQuery('#page_count-' + i).removeClass('active');
   };
};

我试过了:     if(i = 12){         i = 1;          };

但它打破了页面....任何想法?

2 个答案:

答案 0 :(得分:2)

就个人而言,我会使用递归函数代替循环。

var current_slide = 1;
var number_of_slides = 3;
var time_between_slides = 3000; // ms
var nextSlide = function() {

    // do your stuff that changes slides here

    if (current_slide < number_of_slides) {
        current_slide++;
    } else {
        current_slide = 1;
    }

    window.setTimeout(function() {
        nextSlide() // function calls its self, creating an "infinite loop"
    }, time_between_slides);
};
window.setTimeout(function() {
    nextSlide(); // initially call the function to go to the next slide
}, time_between_slides);

答案 1 :(得分:0)

    function repeat(i) {
        i++;

        if (jQuery('#slide-' + i).is(':visible')) {
            console.log('#slide-' + i);
            jQuery('#page_count-' + i).addClass('active');
        } else {
            jQuery('#page_count-' + i).removeClass('active');
           };
         i = i % 12;
         if( i == 0 ) {
             setTimeout(function() {
              repeat(0);
             },5000); // delay of 5 seconds.
         }
         else {

           repeat(i);
         }
    }

repeat(0);
编辑:像TrueBlueAussie建议的那样,删除了循环解决方案。

编辑2:由于TrueBlueAussie,修复了愚蠢的逻辑错误。 这将快速运行前12个呼叫,然后延迟5秒钟 重新启动。