【问题标题】:Javascript Stopwatch not starting at zeroJavascript秒表不从零开始
【发布时间】:2023-03-15 20:45:01
【问题描述】:

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

<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() 中包含start = new Date().getTime(); 吗?
  • 我刚刚尝试过,它使秒表停止工作。我不明白,你说的似乎很有道理,但JS没有任何意义!
  • @Howard - 是的,这解决了它:) 酷酷
  • 请将函数传递给 setTimeout 而不是字符串。
  • 啊,我第一次尝试时它不起作用的原因是因为我放了 var start 而不是 start。谢谢!

标签: javascript onclick stopwatch


【解决方案1】:

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

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

查看运行版本here

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-20
      • 2021-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-13
      • 1970-01-01
      相关资源
      最近更新 更多