clearTimeout打开时,对话框上的功能无法正常工作

时间:2012-11-03 03:33:56

标签: javascript jquery

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

2 个答案:

答案 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()