2012-05-31 121 views
-1

請幫助我,並告訴我這裏有什麼問題.... 也我不想使用jq插件 當我setInterval代碼圖片來與不同方式 對不起我的英文不好幻燈片與淡入和淡出(jquery)

<code> 
    $(function(){ 
     function slideshow(){ 
     $('.img4').fadeOut(2800,null,function(){ 
       $('.img3').fadeOut(2800,null,function(){ 
        $('.img2').fadeOut(2800,null,function(){ 
         $('.img1').fadeIn(2800,null,function(){ 
          $('.img2').fadeIn(2800,null,function(){ 
           $('.img3').fadeIn(2800,null,function(){ 
            $('.img4').fadeIn(2800,null,function(){ 
             $('.img4').fadeOut(2800) 
            }) 
           }) 
          }) 
         }) 
        }) 
       }) 
      }) 
     } 
     //slideshow() 
     setInterval(slideshow,1000); 

</code> 
+0

的症狀有哪些?這是一些非常難以維護的代碼就在那裏。 –

+1

***飛行V *** – rlemon

+0

您應該循環播放圖像,而不是使用每個圖像的回調函數。 – 2012-05-31 12:27:25

回答

1

您正在開始一個新的幻燈片每一秒,所以一段時間後,你將有數以百計的幻燈片試圖動畫相同的對象。

而不必啓動新幻燈片的間隔,開始下一次,當第一飾面:

$(function(){ 
    function slideshow(){ 
    $('.img4').fadeOut(2800,null,function(){ 
     $('.img3').fadeOut(2800,null,function(){ 
     $('.img2').fadeOut(2800,null,function(){ 
      $('.img1').fadeIn(2800,null,function(){ 
      $('.img2').fadeIn(2800,null,function(){ 
       $('.img3').fadeIn(2800,null,function(){ 
       $('.img4').fadeIn(2800,null,function(){ 
        slideshow(); 
       }) 
       }) 
      }) 
      }) 
     }) 
     }) 
    }) 
    } 
    slideshow(); 
}); 
+0

多麼愚蠢的錯誤,謝謝 – aligh

1

有相當多的事情錯在這裏...

  1. 不使用單獨的選擇來獲取圖像。以編程方式將它們編出來 - 否則每次添加/刪除圖像時都必須更改代碼。
  2. 不要重複回調代碼爲您的回調,使該功能,需要參數。
  3. 不要使用setInterval而是使用setTimeout,並在必要時清除回調並初始化新超時。

這就是說這些是處理編碼風格和最佳實踐的更好的問題,不一定對您的實際問題負責。但是你從來沒有確切地說明問題是什麼。如果你可以編輯你的問題,並詳細說明會有用。

1

我相信你有一個非常好的理由來建立自定義幻燈片放映,但如果我可以建議使用插件來避免不可維護的代碼?

http://jquery.malsup.com/cycle/