-1

在这里我附上了我的代码。我在对话框打开时清除超时功能。但它无法正常工作。当我打开对话框时,倒计时从 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);                         
     } 
};
4

2 回答 2

1

您必须分配setTimeout给一个变量

var timer;    
timer = setTimeout(startTimer,1000);

您可以通过传递变量来清除setTimeout使用。clearTimeout

clearTimeout(timer);
于 2012-11-03T03:46:18.043 回答
1

要调用clearTimeout()你想传入intervalVariable由返回的setTimeout(),而不是函数,所以它看起来像:

var intervalVariable = setTimeout(startTimer,1000);
clearTimeout(intervalVariable);

最好是intervalVariable作为超时的 ID,然后浏览器使用它来取消它。

在您的函数之前设置一个全局变量startTimer,然后将其设置为 return ofsetTimeout()并使用它来代替startTimerin clearTimeout()

于 2012-11-03T03:47:08.797 回答