我的代码:
$(function() { $('a.startSlideshow').click(function() { startSlideShow = window.setInterval(function() { slideSwitch() }, 1000); }); $('a.next').click(function() { if (startSlideShow) { clearInterval(startSlideShow); } nextSlide(); }); });
我的本意:
如果用户单击startSlideshow链接,则幻灯片放映function每1秒执行一次。
如果用户单击下一个链接,则幻灯片显示function将在已经执行的情况下停止。
为了能够检测到这一点,我将设置间隔存储为变量。 但是,当我检查它时:
if (startSlideShow) { clearInterval(startSlideShow); }
它不起作用。 现在,如果我点击下一步之前单击开始幻灯片链接,我的代码就可以工作了。 但是,如果幻灯片function从未启动(即我从未点击过该链接,但从开始时点击了下一步),则代码失败。
基本上这是因为在没有定义startSlideshow var时导致代码因某些原因而中断:
if (startSlideShow) { clearInterval(startSlideShow); }
我确实尝试了其他方法来检查是否已设置该变量,但都失败了。 怎么解决这个?
在第一个处理程序之前声明startSlideShow
:
var startSlideShow = null;
并在以后清楚:
if (startSlideShow) { window.clearInterval(startSlideShow); startSlideShow = null; }
我相信你有一个范围问题:
$(function() { var startSlideShow; $('a.startSlideshow').click(function() { startSlideShow = window.setInterval(function() { slideSwitch() }, 1000); }); $('a.next').click(function() { if (startSlideShow) { clearInterval(startSlideShow); } nextSlide(); }); });
在单击函数之外定义变量。
那是因为你没有声明startSlideShow ,所以在运行start函数之前它不存在。 此时,它变为具有值的全局变量。
你应该把它包含在一个闭包中并用var声明它。
需要了解更多jQuery教程分享如何在javascript中做一个明确的间隔?,都可以关注jQuery技术分享栏目—计算机技术网(www.ctvol.com)!
以上就是jQuery教程分享如何在javascript中做一个明确的间隔?相关内容,想了解更多jQuery开发(异常处理)及jQuery教程关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/jquerytutorial/981786.html