2014-12-31 22 views
0

我試圖創建一個簡單的幻燈片。問題在於我的if/else語句。我希望它在我的$ base === 0時添加一個類,但它僅在確定值爲0之後應用。如果其他條件發生在下一個傳球后setInterval

示例當我console.log $ base.length,將會像這樣:1 ,1,1,1,0,1,1,

我不希望它應用類AFTER 0已被聲明,但在同一時間。不知道是什麼造成這種情況。這與setInterval vs if/else有衝突嗎?

  <ul class="slideshow"> 
       <li class="slideshow1 e-slide-on"></li> 
       <li class="slideshow2"></li> 
       <li class="slideshow3"></li> 
       <li class="slideshow4"></li> 
      </ul> 


     function slideSwitch() { 
      var $base = $('.slideshow li.e-slide-on'); 

      $base.next().addClass('e-slide-on'); 
      $base.removeClass('e-slide-on'); 

      if ($base.length === 0){ 
       $('.slideshow li:first').addClass('e-slide-on'); 
      } else{ 
       return; 
      } 
     } 
     $(function() { 
      setInterval(function(){slideSwitch()}, 1000); 
     }); 
+0

對於如何阻止(清晰)和間隔時間,請參閱:http://stackoverflow.com/questions/109086/stop-setinterval-call-in-javascript – ochi

+4

你不是應該檢查' $ base.next()。長度=== 0'? – anpsmn

+0

刪除一個類不會改變爲'$ base'創建的元素的集合 – charlietfl

回答

1

我想你應該檢查是否有下一個元素,而不是如果你有一個當前。

嘗試if($base.next().length === 0)