我正在使用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()

关于javascript - ClearInterval不会停止,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7813886/

10-12 12:31