结束考试后如何停止计时器?

时间:2011-08-04 02:59:37

标签: javascript settimeout

我想在结束考试时停止此计时器,但在它达到零之前。请帮我解决脚本问题。感谢。

JavaScript代码:

var cnt = 165*60; // 165 minutes (2 hours & 45 minutes) convert to seconds

function countdown() {
    if (cnt < 0) {
        document.f.c.value = "- : - - : - -" ;
    }
    else {
        hour = Math.floor(cnt / 3600);
        totalmin = Math.floor(cnt / 60);
        min = totalmin - (hour * 60);
        sec = cnt - (totalmin * 60);
        if (sec < 10) { sec = "0" + sec;}
        if (min < 10) {min = "0" + min;}
        if (hour < 10) {hour = "0" + hour;}
        document.f.c.value = hour + ":" + min + ":" + sec;
        cnt--;
        _timer = setTimeout("countdown()", 1000);
    }
}

var _timer = setTimeout("countdown()", 1000); // tick

4 个答案:

答案 0 :(得分:0)

在你的其他部分 检查

if(current_time < total_time)
{
   //Set TimeOut
}

答案 1 :(得分:0)

我认为你最好的选择是使用setInterval而不是setTimeout。

setInterval返回间隔的句柄。 clearInterval(句柄)将取消该间隔。这是一些让你入门的假:

var global_timer;

function countdown(){
    // do some countdown stuff

    if([we're done]) {
        window.clearInterval(global_timer);
    }
}

global_timer = window.setInterval("countdown()", 1000);

答案 2 :(得分:0)

我认为你的意思是你想在倒计时达到0之前结束计时器

首先,您应该使用setInterval代替。它应该适用于所有主流浏览器(包括IE)。这只是表达“我希望这种情况经常发生”的一种更好的方式。根据{{​​3}},它:

  

重复调用函数,每次调用该函数之间都有固定的时间延迟。

以下是您将如何使用它:

var cnt = 165*60; // 165 minutes (2 hours & 45 minutes) convert to seconds
function countdown() {
  if (cnt < 0) {
   document.f.c.value = "- : - - : - -" ;
  }
  else {
   hour = Math.floor(cnt / 3600);
   totalmin = Math.floor(cnt / 60);
   min = totalmin - (hour * 60);
   sec = cnt - (totalmin * 60);
   if (sec < 10) {sec = "0" + sec;}
   if (min < 10) {min = "0" + min;}
   if (hour < 10) {hour = "0" + hour;}
   document.f.c.value = hour + ":" + min + ":" + sec;
   cnt--;

   if(cnt <= 0) { # Stops the timer when it reaches 0.
       clearInterval(_interval);
   }
  }
}
var _interval = setInterval(countdown, 1000);

页面中的某个位置有一个停止计时器的按钮。

<input type="button" value="Done" onclick="clearInterval(_interval)">

虽然说实话,倒数计时器让我感到非常震惊。我宁愿有一个计时器。 : - )

答案 3 :(得分:0)

在用户结束考试时执行的代码中,可能在按钮点击后,只需添加以下行:

window.clearTimeout(_timer);

计时器将停止滴答。