所以我有一个基本身份验证的Web应用程序.
当我登录时,设置间隔:
$("#login").click(function(e) {
var interval = setInterval(function(){myFunction();}, 2000); });
Run Code Online (Sandbox Code Playgroud)
然后,当我退出时,我需要停止间隔:
$("#logout").click(function(e) {
if(typeof interval !== 'undefined') clearInterval(interval); });
Run Code Online (Sandbox Code Playgroud)
但它不起作用,我认为检查是否存在间隔的方法是错误的...我可以设置间隔,以便在我登录时运行,但是当我点击我的Logout按钮时我需要停止/清除它它不......
PS.我使用间隔每2秒自动检查一次"myFunction",但也许有另一种方法可以在没有间隔的情况下完成此操作?谢谢
jfr*_*d00 20
您的interval变量需要在更高的范围内声明,两个函数都可以使用它.正如您现在所拥有的那样,它是一个局部变量,仅存在于事件处理函数的特定调用中.因此,当调用下一个事件处理程序时,该先前的变量不再存在.您可能还希望防止连续点击登录:
var interval;
$("#login").click(function(e) {
if (!interval) {
interval = setInterval(function(){myFunction();}, 2000);
}
});
$("#logout").click(function(e) {
clearInterval(interval);
interval = null;
});
Run Code Online (Sandbox Code Playgroud)
而且,您无需检查是否interval存在undefined.你可以调用clearInterval()它,clearInterval()并防止你传递它的任何无效参数.