我正在尝试检查我的自调用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
抱歉这个糟糕的解释。我一直在想为什么这些事情发生了。如果有人能解释我做错了什么,或解决方案。请帮忙 - 这个问题让我困扰了好几天。
答案 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。你没有清除间隔,所以他们正在复合。