这里我附上了我的代码。当对话框打开时,我会清除超时功能。但它无法正常工作。当我打开对话框时,倒计时从20减少但在20秒之间如果我关闭并打开对话框,则时间相互折叠。
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);
}
};
答案 0 :(得分:1)
您必须将setTimeout
分配给变量
var timer;
timer = setTimeout(startTimer,1000);
您可以通过传递变量来清除setTimeout
clearTimeout
。
clearTimeout(timer);
答案 1 :(得分:1)
要致电clearTimeout()
,您希望传递intervalVariable
返回的setTimeout()
,而不是函数,所以它看起来像:
var intervalVariable = setTimeout(startTimer,1000);
clearTimeout(intervalVariable);
最好将intervalVariable
作为超时的ID,然后由浏览器用来取消它。
在startTimer
函数之前设置一个全局变量,然后将其设置为setTimeout()
的返回值,并将其用于代替startTimer
中的clearTimeout()
。