2

我将这些指示器链接到每张幻灯片,但是当我到达第 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');
   };
};

我试过:如果(i = 12){ i = 1; };

但它打破了页面....有什么想法吗?

4

2 回答 2

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);
于 2013-09-25T13:59:24.983 回答
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 秒并重新启动。

于 2013-09-25T13:58:42.427 回答