【问题标题】:can't clearInterval on modal window close action无法清除模式窗口关闭操作上的Interval
【发布时间】:2014-06-11 08:12:05
【问题描述】:

我正在使用 Foundation 的模态窗口,当它打开时,我每 3 秒发出一次警报。 关键是我想在模式窗口关闭时禁用间隔。我尝试了以下但 clearInterval 函数似乎不起作用(模式关闭后仍然会生成警报):

$(document).on('opened', '[data-reveal]', function () {
            var interval = setInterval(function(){alert("O.K.");}, 3000);
        if($("div#automate_message").height() > 100) { interval; }
});
        $(document).on('close', '[data-reveal]', function () {
        clearInterval(interval);
});

【问题讨论】:

  • 使变量interval 成为全局变量。在$(document).on('opened'...)上方声明它

标签: javascript jquery zurb-foundation modal-window


【解决方案1】:

在您的代码中,当您尝试 clearInterval 时,变量 interval 超出了范围。

所以,首先全局声明变量interval

全局声明的变量称为:GLOBAL VARIABLES - 它的值是 在整个程序中随处可访问和修改。

试试这个:

var interval = null;
$(document).on('opened', '[data-reveal]', function () {
    interval = setInterval(function(){alert("O.K.");}, 3000);
    if($("div#automate_message").height() > 100) { interval; }
});

$(document).on('close', '[data-reveal]', function () {
    clearInterval(interval);
});

【讨论】:

  • @user3253748:欢迎您。您可以接受答案作为正确答案! :) 因为它可以帮助其他用户找到解决方案。
  • 没问题如果你已经做了这件事。但是“接受答案作为正确答案”意味着单击答案旁边的复选标记以将其从空心切换为绿色。见stackoverflow.com/help/accepted-answer 如果你已经做过这件事,那么这是一个错误:)
  • 好的。的确! :) 固定
  • 欢迎您,很高兴为您提供帮助 :)
【解决方案2】:

将变量interval初始化为global variable即全局作用域,以便在任何地方都可以访问。

//global scope
var interval = null;

$(document).on('opened', '[data-reveal]', function () {

        //local scope

        interval = setInterval(function(){alert("O.K.");}, 3000);
        if($("div#automate_message").height() > 100) { interval; }
});

$(document).on('close', '[data-reveal]', function () {
        clearInterval(interval);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多