打开模态窗口后无法清除间隔

时间:2019-07-19 07:45:40

标签: javascript jquery intervals

我试图根据模式是打开还是关闭来创建和清除间隔。我可以运行它,但是一旦关闭模式,它就会显示错误:

  

未定义var myInterval

不过,

myInterval已定义。我在做什么错了?

jQuery(document).ready(function() {
  $("#modal-task").on("shown.bs.modal", function() {
    // This works
    var myInterval = setInterval(function() {
      startTask();
    }, 3000);
  });

  $('#modal-task').on('hide.bs.modal', function() {
    // This throws the error: var myInterval is not defined
    clearInterval(myInterval);
    console.log("Hide Modal. Clear Interval");
  });
});

1 个答案:

答案 0 :(得分:1)

这是因为您仅在myInterval处理程序的范围内声明了shown.bs.modal。为了使两个函数都可以访问它,您需要在两个位置都可以访问的最低范围内声明它。在这种情况下,它将在document.ready处理程序中:

jQuery(function($) {
  var myInterval;

  $("#modal-task").on("shown.bs.modal", function() {
    myInterval = setInterval(function() {
      startTask();
    }, 3000);
  });

  $('#modal-task').on('hide.bs.modal', function() {
    clearInterval(myInterval);
    console.log("Hide Modal. Clear Interval");
  });
});