Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery启动一系列模拟单击,必要时停止_Javascript_Jquery - Fatal编程技术网

Javascript jquery启动一系列模拟单击,必要时停止

Javascript jquery启动一系列模拟单击,必要时停止,javascript,jquery,Javascript,Jquery,我有一个链接,当用户想要“开始”导游时,可以单击该链接。它所做的是使用设置超时来模拟一系列点击——几乎就像幻灯片(它是一个单页网站) 但是,当用户单击其中一个手动导航链接时,我希望此自动导游停止。有什么建议吗 /编辑:这就是我需要的工作方式 我需要。单击()#导航a,然后在5秒钟后立即。单击()#导航b,依此类推(一直到#导航e) 当用户单击#stop时,它将停止自动。单击() 当用户再次单击#start时,它将从#nav_a重新开始。添加一个透明的掩码div,当用户单击时,您可以捕获事件并停止

我有一个链接,当用户想要“开始”导游时,可以单击该链接。它所做的是使用设置超时来模拟一系列点击——几乎就像幻灯片(它是一个单页网站)

但是,当用户单击其中一个手动导航链接时,我希望此自动导游停止。有什么建议吗

/编辑:这就是我需要的工作方式

我需要
。单击()
#导航a
,然后在5秒钟后立即
。单击()
#导航b
,依此类推(一直到
#导航e

当用户单击
#stop
时,它将停止自动
。单击()


当用户再次单击
#start
时,它将从
#nav_a
重新开始。添加一个透明的掩码div,当用户单击时,您可以捕获事件并停止
设置超时
我使幻灯片放映循环,但如果您愿意,可以让它在结尾处停止。基本逻辑是单击幻灯片时,我t取消自动播放

<div class="slides">
  <div class="slide">[ content ]</div>
  <div class="slide">[ content ]</div>
  <div class="slide">[ content ]</div>
</div>
<script>
var stopSlideshow = false,
slideTimeout = null,
slideTime = 5000, // 5 seconds
doSlide = function($slide) {
   $('.slide').not($slide).hide(); // hide all but current slide
   $slide.show(); // show current slide
   $slide = ($slide.next().length) ? $slide.next() : $('.slide:first');
   if (!stopSlideshow) { // automatically keeps going if slide show not stopped
       slideTimeout = window.setTimeout(function(){doSlide($slide);}, slideTime);
   }
};
$('.slide').bind('click',function(ev){
   stopSlideshow = true; // set flag
   window.clearTimeout(slideTimeout); // stop timeout
   $('.slide').unbind(); // cancel slide click
});
doSlide($('.slide:first')); // start wizard
</script>

[内容]
[内容]
[内容]
var stopSlideshow=false,
slideTimeout=null,
slideTime=5000,//5秒
doSlide=函数($slide){
$('.slide')。不是($slide.hide();//隐藏除当前幻灯片以外的所有幻灯片
$slide.show();//显示当前幻灯片
$slide=($slide.next().length)?$slide.next():$('.slide:first');
如果(!stopSlideshow){//如果幻灯片放映未停止,则自动继续
slideTimeout=window.setTimeout(函数(){doSlide($slide);},slideTime);
}
};
$('.slide').bind('click',函数(ev){
stopSlideshow=true;//设置标志
window.clearTimeout(slideTimeout);//停止超时
$('.slide').unbind();//取消幻灯片单击
});
doSlide($('.slide:first');//启动向导

使用
clearTimeout
/
clearInterval
。我更喜欢setTimeout/clearTimeout,这样超时会产生另一个超时,因为你可以很容易地传递一个超时产生另一个超时的上下文,这会在你明确的时候导致更负责任的编程。既然我产生了新的setTimeout,我如何才能设置一个单击“停止”时是否清除?