2

我正在尝试检查我的自调用 jquery 函数是否完成了工作,但发生的事情是结果在每次自调用时不断增加。

HTML

<span id="checkit"></span>

Javascript

$(function(){
    callme();
});

function callme(){
    $('#checkit').append("callme loaded<br />");
    setInterval("callme()", 5000);
}

通常,这是我的代码结果。

负载。

callme loaded

5 秒后

callme loaded <from previous
callme loaded

再过5秒

callme loaded <from previous
callme loaded <from previous
callme loaded
callme loaded
callme loaded
callme loaded

对不起,糟糕的解释。我一直在认真思考为什么会发生这些事情。如果有人能解释我做错了什么,或者解决方案。请帮助 - 这个问题一直困扰着我好几天。

4

3 回答 3

3

每次调用时callme,您都在创建一个将callme再次调用的新间隔。clearInterval您可以使用或setTimeout代替清除先前的间隔setInterval

function callme(){
    $('#checkit').append("callme loaded<br />");
    setTimeout(callme, 5000);
}
于 2011-10-20T02:39:32.947 回答
0

您需要检查#checkit 元素是否已创建。并且,您需要使用超时(仅调用一次)而不是间隔(不断进行):

function callme(){
   $('#checkit').append("callme loaded<br />");
   if (!document.getElementById('checkit'))
      setTimeout(callme, 5000);
}

学习参考:window.setTimeout

于 2011-10-20T02:40:03.990 回答
0

setInterval 不是 setTimeout。您没有清除间隔,因此它们正在复合。

于 2011-10-20T02:40:24.200 回答