Javascript秒表不是从零开始的

Javascript Stopwatch not starting at zero

本文关键字:从零开始 Javascript      更新时间:2023-09-26

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

<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>

我已经尝试定义开始按钮的开始变量onclick,但到目前为止还没有多少成功。

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

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

你遇到的问题是你的记录start一旦页面加载,而不是当用户实际点击开始按钮。要记录用户实际点击按钮时的开始,请将doTimer函数更改为以下

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