检查间隔是否为 运行,反之亦然
Check if an Interval is running and viceversa
所以我有一个带有基本身份验证的网络应用程序。
当我登录时,设置了一个间隔:
$("#login").click(function(e) {
var interval = setInterval(function(){myFunction();}, 2000); });
然后当我注销时我需要停止间隔:
$("#logout").click(function(e) {
if(typeof interval !== 'undefined') clearInterval(interval); });
但它不起作用,我认为检查间隔是否存在的方法是错误的...我可以设置间隔,所以当我登录时它是 运行,但我需要 stop/clear 当我点击我的注销按钮时它没有...
PS。我使用间隔每 2 秒自动检查 "myFunction",但也许还有另一种方法可以在没有间隔的情况下完成此操作?谢谢
您的 interval
变量需要在两个函数都可用的更高范围内声明。正如您现在所拥有的,它是一个局部变量,仅存在于您的事件处理函数的特定调用中。因此,当调用下一个事件处理程序时,先前的变量不再存在。您可能还想防止连续点击登录:
var interval;
$("#login").click(function(e) {
if (!interval) {
interval = setInterval(function(){myFunction();}, 2000);
}
});
$("#logout").click(function(e) {
clearInterval(interval);
interval = null;
});
而且,您无需检查 interval
是否为 undefined
。你可以在它上面调用 clearInterval()
,clearInterval()
将防止你传递给它的任何无效参数。
这是一个简单的示例,其中您的间隔变量应该在两个点击事件的全局范围内。
<!DOCTYPE html>
<html>
<head>
<title></title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
function myFunction(){
var d = new Date();
var t = d.toLocaleTimeString();
document.getElementById("demo").innerHTML = t;
}
var interval;
$("#start").click(function(){
interval = setInterval(function(){
myFunction();
},2000);
});
$("#stop").click(function(){
clearInterval(interval);
});
});
</script>
</head>
<body>
<p id="demo"></p>
<button id="start">Start</button>
<button id="stop">Stop</button>
</body>
</html>
所以我有一个带有基本身份验证的网络应用程序。
当我登录时,设置了一个间隔:
$("#login").click(function(e) {
var interval = setInterval(function(){myFunction();}, 2000); });
然后当我注销时我需要停止间隔:
$("#logout").click(function(e) {
if(typeof interval !== 'undefined') clearInterval(interval); });
但它不起作用,我认为检查间隔是否存在的方法是错误的...我可以设置间隔,所以当我登录时它是 运行,但我需要 stop/clear 当我点击我的注销按钮时它没有...
PS。我使用间隔每 2 秒自动检查 "myFunction",但也许还有另一种方法可以在没有间隔的情况下完成此操作?谢谢
您的 interval
变量需要在两个函数都可用的更高范围内声明。正如您现在所拥有的,它是一个局部变量,仅存在于您的事件处理函数的特定调用中。因此,当调用下一个事件处理程序时,先前的变量不再存在。您可能还想防止连续点击登录:
var interval;
$("#login").click(function(e) {
if (!interval) {
interval = setInterval(function(){myFunction();}, 2000);
}
});
$("#logout").click(function(e) {
clearInterval(interval);
interval = null;
});
而且,您无需检查 interval
是否为 undefined
。你可以在它上面调用 clearInterval()
,clearInterval()
将防止你传递给它的任何无效参数。
这是一个简单的示例,其中您的间隔变量应该在两个点击事件的全局范围内。
<!DOCTYPE html>
<html>
<head>
<title></title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
function myFunction(){
var d = new Date();
var t = d.toLocaleTimeString();
document.getElementById("demo").innerHTML = t;
}
var interval;
$("#start").click(function(){
interval = setInterval(function(){
myFunction();
},2000);
});
$("#stop").click(function(){
clearInterval(interval);
});
});
</script>
</head>
<body>
<p id="demo"></p>
<button id="start">Start</button>
<button id="stop">Stop</button>
</body>
</html>