2015-06-17 122 views
0

下面的代碼正常工作,直到我嘗試向其中添加暫停爲止。基本上,它會循環並且看起來很正常,但幾次之後,它會自動追上並導致很多奇怪的結果。我很好奇,如果有更好的方法來實現我的目標。在循環結束處添加暫停

var popups = $('.animate'); 
var i = 0; 
var pT = 2000; 

function animatePopup() { 
    if (i >= popups.length){ 
     i = 0; 
    } 
    popups.eq(i).addClass("show") 
     .delay(2000) 
     .queue(function() { 
      $(this).removeClass("show"); 
      $(this).dequeue(); 
      if (i == popups.length) { 
       setInterval(animatePopup, pT); 
      } else { 
       animatePopup(); 
      } 
     }); 
    i++; 
} 
animatePopup(); 
+1

你最好的選擇是使用回調。但是,它可能看起來很混亂。這對我來說確實是第一次。你有沒有嘗試過javascript的setTimeout? – ODelibalta

+3

'setInterval'運行每個'pT'毫秒..你可能意思是'setTimeout' – yoavmatchulsky

回答

2

使用setTimeout代替setInterval

setInterval運行在間隔的代碼/功能,與它們之間的超時長度,但它保持運行THEM。在另一方面setTimeout運行一次在指定的時間

這裏到底是一個片段,如果你改變setTimeoutsetInterval你會看到它都瘋了太

function recurrentDelayedFunction() { 
 
    
 
    $('#out').append('ran<br>'); 
 
    
 
    setTimeout(recurrentDelayedFunction, 2000); 
 
} 
 

 
recurrentDelayedFunction();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div id=out></div>

+0

這沒有竅門,謝謝。 – DRB