2013-10-03 117 views
0

我正在嘗試停止一個循環,以便其他事物可以運行,然後在序列中的正確時間再次返回循環。我的代碼運行一次,但隨後似乎是無法運行我用clearInterval();停止並啓動setInterval()

function runPlanner() { 

    var plannerInterval = setInterval(function(){ 

     imageCounter++; 

     var imageTotal = $('li img').length; 

     if (imageCounter > imageTotal + 1) { 
      $('li img').hide(); 
      imageCounter = 0; 
      clearInterval(plannerInterval); 
     } else { 
      $('li img:nth-child(' + imageCounter +')').fadeIn('slow'); 
     } 

     console.log('image counter:',imageCounter); 
     console.log('image total:',imageTotal); 
    }, 2500); 

} 

後,然後我就可以開始運行這個,有:

runPlanner(); 

但是,如果條件滿足,其中clearInterval被調用,然後使用該函數調用不起作用。任何想法,請!?

+0

所以,'runPlanner();'當你再次 – tymeJV

+0

復位調用它不工作'imageCounter' – okuznetsov

+1

@okuznetsov什麼是'imageCounter = 0;'如果不進行重置呢? – George

回答

1

嘗試使用setTimeout風格。所以你不會再遇到clearInterval的問題。

這樣子。

function runPlanner() { 

     imageCounter++; 

     var imageTotal = $('li img').length; 

     if (imageCounter > imageTotal + 1) { 
      $('li img').hide(); 
      imageCounter = 0; 
     } else { 
      $('li img:nth-child(' + imageCounter +')').fadeIn('slow'); 

      // re-called `runPlanner` after 2500 sec 
      setTimeout(runPlanner, 2500); 
     } 

     console.log('image counter:',imageCounter); 
     console.log('image total:',imageTotal); 

} 

runPlanner(); 
+0

我剛剛意識到,這是因爲我正在使用索引變量和第n個子變量。索引從0開始,第n個孩子從1開始!這會學到我! – JohnRobertPett