我试图根据模式是打开还是关闭来创建和清除间隔。我可以运行它,但是一旦关闭模式,它就会显示错误:
不过,未定义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");
});
});
答案 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");
});
});