javascript - 如何在javascript中清除间隔?

标签 javascript jquery

我的代码:

$(function() {

     $('a.startSlideshow').click(function() {     
          startSlideShow = window.setInterval(function() { slideSwitch() }, 1000);
     });


     $('a.next').click(function() {     
          if (startSlideShow) {
               clearInterval(startSlideShow);
          }
          nextSlide();
     });

});

我的意图:

如果用户单击 startSlideshow 链接,幻灯片函数每 1 秒执行一次。

如果用户单击下一个链接,则幻灯片功能将停止(如果已执行)。

为了能够检测到这一点,我将设置的间隔存储为变量。然而,当我检查它时:

          if (startSlideShow) {
               clearInterval(startSlideShow);
          }

这不起作用。现在,如果我在单击“下一步”之前单击“开始幻灯片放映”链接,则我的代码可以正常工作。但是,如果幻灯片功能从未启动(即我从未首先单击该链接,而是从一开始就单击了下一个),则代码将失败。

基本上,当 startSlideshow var 尚未定义时,这会导致代码由于某种原因而中断:

      if (startSlideShow) {
           clearInterval(startSlideShow);
      }

我确实尝试了其他方法来检查该变量是否已设置,但都失败了。怎么解决这个问题?

最佳答案

在第一个处理程序之前声明 startSlideShow:

var startSlideShow = null;

稍后再清除:

if (startSlideShow) {
    window.clearInterval(startSlideShow);
    startSlideShow = null;
} 

关于javascript - 如何在javascript中清除间隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6590671/

相关文章:

javascript - 在工厂错误 : [$injector:unpr] Unknown provider: $scopeProvider <- $scope <- ProjectService <- Project 中注入(inject)服务

javascript - 如何在 jquery 中表达 'has not'?

jquery - Foundation Zurb 下拉菜单不起作用

javascript - 在 Jquery 函数中包含 html 代码

javascript - 如何防止在 Javascript 代码执行之前出现 html 文本

javascript - 为什么在 JavaScript 表达式中 255 << 24 是一个负数?

javascript - React/Redux - 为什么这个 Promise.all 在调度后继续执行?

javascript - 如何处理超过20位数字(大整数)?

javascript - 图像位于屏幕全宽的 div 内

java - 使用 Spring3 mvc 时出现 ajax 问题。返回对象列表时出现 406 错误