Javascript clearTimeout函数在对话框打开时无法正常工作
这里我附上了我的代码。当对话框打开时,我清除了超时功能。但它不能正常工作。当我打开对话框时,倒计时从20开始减少,但如果我关闭并打开对话框,倒计时在20秒之间,则计时相互崩溃Javascript clearTimeout函数在对话框打开时无法正常工作,javascript,jquery,Javascript,Jquery,这里我附上了我的代码。当对话框打开时,我清除了超时功能。但它不能正常工作。当我打开对话框时,倒计时从20开始减少,但如果我关闭并打开对话框,倒计时在20秒之间,则计时相互崩溃 function(){ var time =20; flag = false; clearTimeout(startTimer); startTimer = function(){ if(!flag){
function(){
var time =20;
flag = false;
clearTimeout(startTimer);
startTimer = function(){
if(!flag){
var finTime = time - 1;
time = finTime;
setTimeout(startTimer,1000);
if(time==0){
flag = true; }
$("#input").text(time);
} else {
clearTimeout(startTimer,1000);
}
};
setTimeout(startTimer,1000);
};
我也试过这个代码
dialogOpen = function(){
$("#dialog").dialog('open');
startTimer();
stopTimer();
}
startTimer = function() {
time = 20;
flag = false;
setTimeout(startTime, 1000);
};
stopTimer = function() {
flag = true;
time = 0;
clearTimeout(startTime);
};
startTime = function(){
if(!flag){
var finTime = time - 1;
time = finTime;
setTimeout(startTime,1000);
if(time==0){
flag = true;
}
$("#input").text(time);
} else {
clearTimeout(Time);
}
};
必须将
setTimeout
分配给变量
var timer;
timer = setTimeout(startTimer,1000);
您可以通过传递变量,使用clearTimeout
清除setTimeout
clearTimeout(timer);
要调用clearTimeout()
,您希望传入由setTimeout()
返回的intervalVariable
,而不是函数,因此它看起来像:
var intervalVariable = setTimeout(startTimer,1000);
clearTimeout(intervalVariable);
最好使用intervalVariable
作为超时的ID,然后浏览器使用该ID取消超时
在
startTimer
函数之前设置一个全局变量,然后将其设置为setTimeout()
的返回值,并在clearTimeout()中使用它代替startTimer
。我将该变量设置为全局变量。将var设置为全局变量是否有任何错误?我不认为您在提供的代码中设置了全局变量。Sry,我在我的程序中提到过。这里没有提到。但是有一个名为startTimer的全局变量。非常感谢。工作正常。我应该将计时器设置为变量,而不是函数。当我一次又一次地打开对话框时,它不清除上一个超时值clearTimeout()
没有将函数作为参数,它使用由setTimeout()
返回的超时ID。你有没有看过?