Jquery自调用函数循环

时间:2011-10-20 02:36:19

标签: jquery function loops function-call

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

HTML

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

Javascript

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

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

通常,这是代码的结果。

的onLoad。

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

抱歉这个糟糕的解释。我一直在想为什么这些事情发生了。如果有人能解释我做错了什么,或解决方案。请帮忙 - 这个问题让我困扰了好几天。

3 个答案:

答案 0 :(得分:2)

每次拨打callme时,您都会创建一个新的时间间隔,再次呼叫callme。您可以使用clearInterval清除上一个时间间隔,也可以使用setTimeout代替setInterval

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

答案 1 :(得分:0)

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

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

学习参考:window.setTimeout

答案 2 :(得分:0)

setInterval不是setTimeout。你没有清除间隔,所以他们正在复合。