window.clearInterval无法正常工作?

| 我正在使用JS通过打开和关闭两个图像来制作动画。我有一个初始图像,当打开动画时,它会出现在屏幕上并保持打开状态。然后,将具有较高z值的第二个图像设置为在与第一个图像相同的位置每隔一秒钟打开和关闭一次,因此看起来好像两者是交替的。 我正在使用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();
    }
}
有人看到它为什么不起作用了吗?     
已邀请:
        阅读这句话,我想你的意思是这样的: 您执行
notebookNotification(1);
,动画开始 执行
notebookNotification(0);
,动画不会停止。 我的猜测是您想让ѭ3禁用闪光。 为了做到这一点,您需要对该功能进行大量修改。您需要将来自
setInterval
intervalID
存储在该函数范围之外的变量中,并且可以在以后对该函数的调用中用于
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);
        }
    }
}
    
        在这里,尝试一下: http://jsfiddle.net/WGxmy/ 将间隔保存到全局变量(而不是函数中的一个变量),可以稍后清除它。     
        
var keepflashing = true;
var isShowing = true;
function notebookNotification()
{
    if(!isShowing)
        $(\"#lightNotificationContainer\").show();
    else
        $(\"#lightNotificationContainer\").show();

    isShowing = !isShowing;

    if(keepflashing)
      setTimeout( function(){  notebookNotification(setting);  },100);
    else
    {
        $(\"#lightNotificationContainer\").hide();
        $(\"#darkNotificationContainer\").hide();
    }
}
    
        也许您可以避免一般调用clearInterval()?
function notebookNotification(setting)
{
    if(setting == 0)
    {
        $(\"#lightNotificationContainer\").hide();
        $(\"#darkNotificationContainer\").hide();
    }
    else
    {
        $(\"#lightNotificationContainer\").show();
        window.setInterval(\'$(\"#darkNotificationContainer\").toggle()\', 1000);
    }
}
    

要回复问题请先登录注册