2015-02-23 112 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 2015-02-23 18:15:10

+0

顯示的代碼甚至不能正確平衡括號...... – 6502 2015-02-23 18:35:18

回答

0

clearInterval不會取消使用jQuery的.delay()函數延遲的任何事件。這些活動無法取消,因爲您可以在這裏閱讀(.delay())。

.delay()方法最適合延遲排隊的jQuery效果。因爲它是有限的 - 例如,它不提供取消延遲的方法.delay()不是JavaScript本地setTimeout函數的替代品,這對於某些用例可能更合適。

看着你的代碼,setInterval的調用根本沒有做任何事情,因爲你給它們的超時時間爲0ms。

如果您希望每個事件都可以取消,那麼setTimeout和clearTimeout可能是您最好的選擇(或setInterval,但它的編號爲moderately evil),但是您將無法將所有這些東西鏈接在一起,這可能也會幫助您代碼更清晰。

+0

謝謝,我會嘗試setTimeout! – cedr 2015-02-23 23:35:44