繁体   English   中英

ClearInterval不会停止

[英]ClearInterval won't stop

我正在使用jQuery在加载时(在AJAX调用之后)“闪烁”一些文本,但是每当我调用clearInterval时,都会收到“未定义”错误。

这是我的代码片段:

OrderId="a12345"; 
var AllIDs = {}; 

AllIDs[OrderId] = setInterval(
    function() {j$("#" + OrderId + "_MessageListSize").fadeIn(200).fadeOut(200)},
    200
);

然后,在AJAX调用完成之后:

OrderId="a12345"; var myid = AllIDs[OrderId]; clearInterval(myid);

为什么clearInterval不能停止动画? 它与我如何使用 关联数组 对象文字有关吗?

提前致谢!

JavaScript没有关联数组,它们是对象文字。 HTML ID不能以数字开头。 您的问题是您安排事件的速度太快,无法对其进行备份。 每隔200毫秒,您就可以安排两个任务,每个任务需要200毫秒才能完成(400毫秒)。

您可以调整时间间隔,但是如果AJAX尚未完成,则使用setTimeout()并安排动画回调中的下一个超时确实是一个更好的主意,否则将无济于事。 无需clearInterval。

像这样

function scheduleBlink() {
   AllIDs[OrderId] = setTimeout(
    function() {
        j$("#" + OrderId + "_MessageListSize").fadeIn(200).fadeOut(200, function () {
             if (!ajaxDone) {
               scheduleBlink();
             }
             else {
               return;
             }
        }))
    },
    200
   );
}

scheduleBlink()

我怀疑问题是您使用的超时间隔为200毫秒。 淡出需要200毫秒,然后淡入需要另外200毫秒,但是,该函数每200毫秒被调用一次,因此在第一个调用完成时,另一个调用已经开始。 启动间隔后,请尝试非常快地清除间隔,然后查看间隔是否在几秒钟后停止。

这是一个示例html文件,对我来说正常工作,在2秒钟后停止闪烁。

<html>
    <head>
        <title>test</title>
        <script type="text/javascript" src="jquery-1.6.4.js"></script>
    </head><body>
        <h1 id="target">Hello, World</h1>

        <script type="text/javascript">
            timeout_id = setInterval(function(){
                $("#target").fadeOut(200).fadeIn(200);          
            }, 400);

            setInterval(function(){ clearInterval(timeout_id); }, 2000);
        </script>
    </body>
</html>

例如,如果我将上面的400毫秒更改为100毫秒,然后刷新页面,则停止闪烁需要更长的时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM