繁体   English   中英

JavaScript jQuery间隔中的全局变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM