Javascript秒表不从零开始

Javascript秒表不从零开始,javascript,onclick,stopwatch,Javascript,Onclick,Stopwatch,我这里有一个基本的秒表,但问题是我认为它在页面加载时开始计数,而不是单击开始按钮时开始计数。同样,当您重置并再次启动时,同样的问题也会发生 <form> <input type="button" value="Start count!" onclick="doTimer()" /> <input type="text" id="txt" /> <input type="button" value="Stop count!" onc

我这里有一个基本的秒表,但问题是我认为它在页面加载时开始计数,而不是单击开始按钮时开始计数。同样,当您重置并再次启动时,同样的问题也会发生

<form>
    <input type="button" value="Start count!" onclick="doTimer()" />
    <input type="text" id="txt" />
    <input type="button" value="Stop count!" onclick="stopCount()" />
    <input type="button" value="Reset!" onclick="resetCount()" />
</form>

<script type="text/javascript">

var start = new Date().getTime(); 
var elapsed = '0.0'; 
var t;
var timer_is_on=0;

function timedCount() {
    var time = new Date().getTime() - start;
    elapsed = Math.floor(time / 100) / 10; 
    if(Math.round(elapsed) == elapsed) { elapsed += '.0'; } 
    document.getElementById('txt').value=elapsed;
    t=setTimeout("timedCount()",50);
}

function doTimer() {
    if (!timer_is_on) {
        timer_is_on=1;
        timedCount();
    }
}

function stopCount() {
    clearTimeout(t);
    timer_is_on=0;
}

function resetCount() {
    document.getElementById('txt').value='0.0';
    var elapsed = '0.0';
}


</script>

var start=new Date().getTime();
var运行时间='0.0';
变量t;
var定时器_为_on=0;
函数timedCount(){
var time=new Date().getTime()-start;
经过=数学楼层(时间/100)/10;
if(Math.round(appeased)=appeased){appeased+='.0';}
document.getElementById('txt')。值=已用时间;
t=设置超时(“timedCount()”,50);
}
函数doTimer(){
如果(!计时器打开){
定时器_为_开=1;
timedCount();
}
}
函数stopCount(){
清除超时(t);
定时器_为_开=0;
}
函数resetCount(){
document.getElementById('txt')。value='0.0';
var运行时间='0.0';
}

我尝试过在单击start按钮时定义start变量,但迄今为止没有太多成功。非常感谢您提供的任何帮助。

您遇到的问题是在页面加载后立即录制
start
,而不是在用户实际单击开始按钮时录制。要记录用户实际单击按钮时的开始时间,请将
doTimer
功能更改为以下选项

function doTimer() {
  if (!timer_is_on) {
    start = new Date().getTime();
    timer_is_on=1;
    timedCount();
  }
}

您必须在
doTimer()中包含另一个重置:


查看正在运行的版本。

您是否可以尝试包括
start=new Date().getTime()
doTimer()
中?我刚刚试过,它使秒表停止工作。我不明白,你说的似乎很有道理,但JS没有任何意义@Howard-是的,这解决了它:)酷酷请将函数传递给setTimeout而不是字符串。啊,当我第一次尝试时,它不起作用的原因是因为我把var start放在了前面,而不是刚开始。谢谢
function doTimer() {
    if (!timer_is_on) {
        start = new Date().getTime(); 
        timer_is_on=1;
        timedCount();
    }
}