clearinterval幻灯片放映不起作用

clearinterval slideshow not working

本文关键字:不起作用 幻灯片 clearinterval      更新时间:2024-03-25

我在幻灯片上清除Interval时遇到一些问题。我读了很多书,但没有发现任何能帮助我的东西。这是我的代码:

<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>

提前感谢您的帮助!

clearInterval不会取消任何使用jQuery的.delay()函数延迟的事件。无法取消这些事件,因为您可以在此处阅读(.delay()).

.delay()方法最适合在排队的jQuery效果之间进行延迟。因为它是有限的——例如,它没有提供取消延迟的方法——.delay()不能代替JavaScript的本地setTimeout函数,后者可能更适合某些用例。

查看您的代码,对setInterval的调用根本没有任何作用,因为您给了它们0ms的超时时间。

如果你希望这些事件中的每一个都是可取消的,那么setTimeout和clearTimeout可能是你最好的选择(或者setInterval,但它有点邪恶),但你无法将所有这些东西链接在一起,这也可能有助于让你的代码更清晰。