2012-05-31 2 views
-1

, пожалуйста, помогите мне и скажите мне, что здесь не так. также я не хочу использовать jq-плагин , когда я устанавливаюInterval код, изображения идут с другим способ извините за мой плохой английскийслайд-шоу с fade-in и fade-out (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

Вы должны прокручивать изображения вместо использования функции обратного вызова для каждого из них. –

ответ

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. Dont использовать отдельные селекторы, чтобы получить изображение. Извлеките их программно - в противном случае вам придется менять свой код каждый раз, когда вы добавляете/удаляете изображение.
  2. Не повторяйте код обратного вызова для своих обратных вызовов, создайте функцию, которая принимает параметры.
  3. Не используйте setInterval вместо setTimeout и очистите свои обратные вызовы и при необходимости инициализируйте новые таймауты.

Это говорит о более лучших проблемах, связанных с стилем кодирования и передовыми методами, не обязательно ответственными за вашу фактическую проблему. Но вы точно не знаете, в чем проблема. Если бы вы могли отредактировать свой вопрос и разработать, что было бы полезно.

1

Уверен, у вас есть веская причина для создания пользовательского слайд-шоу, но если я могу предложить использовать плагин, чтобы избежать недостижимого кода?

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