[英]global variable in javascript jquery interval
我有这样的代码
var challegneListener;
$(document).ready(function(){
var challegneListener = setInterval("challengeListenerBot()",5000);
});
function challengeListenerBot(){
clearInterval(challegneListener);
}
问题在于间隔不会停止,因为称为ChallengeListenerBot的函数没有将challegneListener变量视为间隔数。 准备好文档后,我必须使用jQuery来启动间隔。
更改此:
$(document).ready(function(){
var challegneListener = setInterval("challengeListenerBot()",5000);
});
对此:
$(document).ready(function(){
challegneListener = setInterval("challengeListenerBot()",5000);
});
问题是您要在DOM准备就绪时在匿名函数中声明一个新的challengneListener
变量。 它隐藏了全局变量,并且仅将setInterval ID保存到局部变量,该局部变量在其封闭函数完成执行时被垃圾回收。
$(document).ready(function(){
var challegneListener = setInterval("challengeListenerBot()",5000);
});
在此函数内部使用var会创建一个范围限定于此函数的新变量,这意味着全局定义的challegneListener变量将保持未定义状态,因此不会清除间隔。 删除var以修复此代码。
您隐藏全局变量,删除var
:
$(document).ready(function(){
challegneListener = setInterval("challengeListenerBot()",5000);
// removed the var keyword, because it hides the global var.
});
另一件事,您的代码使用eval
,将其更改为:
challegneListener = setInterval(challengeListenerBot, 5000);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.