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

Javascript 考试结束后如何停止计时?,javascript,settimeout,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 =

我想在考试结束时停止计时,但要在它达到零之前。请帮我写剧本。谢谢

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
var cnt=165*60;//165分钟(2小时和45分钟)转换为秒
函数倒计时(){
if(cnt<0){
document.f.c.value=“-:-:-:-”;
}
否则{
小时=数学楼层(cnt/3600);
totalmin=数学地板(cnt/60);
最小值=总最小值-(小时*60);
秒=碳纳米管-(总最小值*60);
如果(秒<10){sec=“0”+sec;}
如果(min<10){min=“0”+min;}
如果(小时<10){hour=“0”+小时;}
document.f.c.值=小时+“:“+min+”:“+sec;
碳纳米管;
_定时器=设置超时(“倒计时()”,1000);
}
}
var _timer=setTimeout(“倒计时()”,1000);//打上钩
在您的else部分 检查

if(当前时间<总时间)
{
//设置超时
}

我认为最好的选择是使用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);

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

首先,您应该使用
setInterval
。它应该适用于所有主要的浏览器(包括IE)。这只是表达“我希望这种事情经常发生”的一种稍微好一点的方式

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

以下是您将如何使用它:

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);
var cnt=165*60;//165分钟(2小时和45分钟)转换为秒
函数倒计时(){
if(cnt<0){
document.f.c.value=“-:-:-:-”;
}
否则{
小时=数学楼层(cnt/3600);
totalmin=数学地板(cnt/60);
最小值=总最小值-(小时*60);
秒=碳纳米管-(总最小值*60);
如果(秒<10){sec=“0”+sec;}
如果(min<10){min=“0”+min;}
如果(小时<10){hour=“0”+小时;}
document.f.c.值=小时+“:“+min+”:“+sec;
碳纳米管;

如果(cnt在用户结束检查时执行的代码中,可能在单击按钮后,只需添加以下行:

window.clearTimeout(_timer);
计时器将停止滴答作响

<input type="button" value="Done" onclick="clearInterval(_interval)">
window.clearTimeout(_timer);