2013-09-25 49 views
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; };

但它打破了網頁....任何想法?

+0

嘗試將它改爲''if(i === 12){i = 1;}''。要知道你的for循環現在被設置的方式,它會導致無限循環,這可能會導致你的JavaScript引擎超負荷,並使你的瀏覽器無響應。 – Kippie

+1

看到這麼多人只是抄襲他的錯誤。 setTimeout/setInterval,人! – Kippie

+0

+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秒鐘並重新啓動 。

+0

第二個答案更好,但爲了上帝的緣故,刪除你的第一個答案(它除了更新類每秒1000次以外......什麼都不做):) –

+0

謝謝大家的快速回復....我會執行你的想法,看看我得到了什麼。再次感謝 – HRone

+0

你可以用'i =(i-1)%12 + 1'獲得相同的數字包裝。您是否打算在計時器回撥中傳遞1或我?有什麼奇怪的事情發生在那裏。 –

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

+1:最後一些常見的(非無限)感覺:) –

+0

爲什麼用''setTimeout''遞歸而不只是使用''setInterval''? – Kippie

+1

@Kippie - 我使用setTimeout,因爲在我讓函數再次調用自己之前,我可以檢查幻燈片是否進入「暫停模式」。 –

相關問題