2015-02-23 2 views
-2

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

<script> //under are my pictures sliding every 6 seconds (working well) 
    $(document).ready(function(){ 
    var interval1= setInterval (function(){$('#imgvoy1').show(0).delay(36000); 
    },0); 
    var interval2 = setInterval (function(){ 
    $('#imgvoy2').hide(0).delay(5000).fadeIn(1000).show(0).delay(5000).fadeOut(1000).hide(0).delay(24000) 
    },0); 
    var interval3 = setInterval (function(){ 
    $('#imgvoy3').hide(0).delay(11000).fadeIn(1000).show(0).delay(5000).fadeOut(1000).hide(0).delay(18000) 
    },10); 
    var interval4 = setInterval (function(){ 
    $('#imgvoy4').hide(0).delay(17000).fadeIn(1000).show(0).delay(5000).fadeOut(1000).hide(0).delay(12000) 
    },0); 
    var interval5 = setInterval (function(){ 
    $('#imgvoy5').hide(0).delay(23000).fadeIn(1000).show(0).delay(5000).fadeOut(1000).hide(0).delay(6000) 
    },0); 
    var interval6 = setInterval (function(){ 
    $('#imgvoy6').hide(0).delay(29000).fadeIn(1000).show(0).delay(5000).fadeOut(1000).hide(0).delay(0) 
    },0); 

    // and here is my code to make the slideshow stop when you click on #imagesprecsuiv element. Unfortunately, it does not work! 
    $('#imagesprecsuiv').click(function(){ 
    clearInterval(interval1); 
    clearInterval(interval2); 
    clearInterval(interval3) 
    clearInterval(interval4); 
    clearInterval(interval5); 
    clearInterval(interval6) 
    }); 
</script> 

Заранее благодарю вас за помощь!

+3

Можете ли вы отформатировать код и определить, что «он не работает». – Teemu

+0

Показанный код даже не скорректирует скобки правильно ... – 6502

ответ

0

clearInterval не отменяет никаких событий, отложенных с использованием функции .delay() jQuery. Эти события не могут быть отменены, как вы можете прочитать здесь (.delay()).

Метод .delay() лучше всего задерживать между обработанными в очереди эффектами jQuery. Поскольку он ограничен - он, например, не предлагает способ отмены задержки. .delay() не является заменой встроенной функции setTimeout для JavaScript, что может быть более подходящим для определенных случаев использования.

При взгляде на ваш код вызовы setInterval ничего не предпринимают, поскольку вы дали им тайм-аут 0ms.

Если вы хотите, чтобы каждое из этих событий было отменено, то setTimeout и clearTimeout, вероятно, являются вашим лучшим выбором (или setInterval, но это moderately evil), но вы не сможете связать все эти вещи вместе, что также может помочь вам код более разборчивый.

+0

Спасибо, я попробую с setTimeout, а затем! – cedr

Смежные вопросы