我有这样的代码
var challegneListener;
$(document).ready(function(){
var challegneListener = setInterval("challengeListenerBot()",5000);
});
function challengeListenerBot(){
clearInterval(challegneListener);
}
问题是间隔没有停止,因为名为challengeListenerBot的函数没有看到challegneListener变量作为间隔数。我必须使用jQuery在文档准备就绪时启动间隔。
答案 0 :(得分:4)
改变这个:
$(document).ready(function(){
var challegneListener = setInterval("challengeListenerBot()",5000);
});
对此:
$(document).ready(function(){
challegneListener = setInterval("challengeListenerBot()",5000);
});
问题是你在匿名函数中声明,当DOM准备就绪时,调用一个新的challengneListener
变量。它隐藏了全局变量,只将setInterval ID保存到局部变量中,当它的封闭函数执行完毕时,它会被垃圾收集。
答案 1 :(得分:1)
$(document).ready(function(){
var challegneListener = setInterval("challengeListenerBot()",5000);
});
在此函数中使用var会创建一个范围为此函数的新变量,这意味着全局定义的challegneListener变量仍未定义,因此间隔未被清除。删除var以修复此代码。
答案 2 :(得分:0)
隐藏全局变量,删除var
:
$(document).ready(function(){
challegneListener = setInterval("challengeListenerBot()",5000);
// removed the var keyword, because it hides the global var.
});
另一件事,您的代码使用eval
,将其更改为:
challegneListener = setInterval(challengeListenerBot, 5000);