window.clearInterval不起作用?

Bri*_*riz 0 javascript toggle intervals

我正在使用JS通过打开和关闭它们来动画两个图像.我有一个初始图像,当动画打开时,它出现在屏幕上并保持打开状态.然后将具有较高z值的第二图像设置为在与第一图像相同的位置中每1秒打开和关闭,因此看起来两者是交替的.

我正在使用window.setInterval使第二个图像闪烁,但是当我需要关闭动画时(我从屏幕上删除两个图像),我的window.clearInterval不是"正常工作"第一个图像将是走了,但第二个每秒都在眨眼.

码:

function notebookNotification(setting)
{
    $("#lightNotificationContainer").show();
    var notificationAnimation = window.setInterval('$("#darkNotificationContainer").toggle()', 1000);
    if(setting == 0)
    {
        window.clearInterval(notificationAnimation);
        $("#lightNotificationContainer").hide();
        $("#darkNotificationContainer").hide();
    }
}
Run Code Online (Sandbox Code Playgroud)

任何人都明白为什么它不起作用?

Dan*_*umb 5

在线之间阅读,我想你所说的是:

  1. 你执行notebookNotification(1);并开始动画
  2. 您可以执行notebookNotification(0);与该动画还没有停止.

我的猜测是你要notebookNotification(0)禁用闪烁.

为此,您需要对此功能进行大量修改.您需要将intervalID来自setInterval变量的变量存储在此函数范围之外的变量中,并且可以clearInterval在后续调用此函数时使用.

例如:

var intervalID;
function notebookNotification(setting)
{
    if(setting == 0)
    {
        if(intervalID) {
            window.clearInterval(intervalID);
            intervalID = null;
        }
        $("#lightNotificationContainer").hide();
        $("#darkNotificationContainer").hide();
    }
    else
    {
        $("#lightNotificationContainer").show();
        if(!intervalID) {
            intervalID = window.setInterval('$("#darkNotificationContainer").toggle()', 1000);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)