Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从特定的动态值启动javascript秒表_Javascript_Dynamic_Stopwatch - Fatal编程技术网

从特定的动态值启动javascript秒表

从特定的动态值启动javascript秒表,javascript,dynamic,stopwatch,Javascript,Dynamic,Stopwatch,在提问之前,我想告诉你,我已经搜索了相关主题的问题,但我的问题与其他问题不同。事实上,我正在构建一个“Javascript秒表”,但脚本中有一些问题我已经尝试并搜索过解决,但没有找到。秒表中存在以下问题: 重新加载页面时,秒表会自动重新启动,即使计时器被“stop_btn”停止 重新加载页面时,秒表自动重新启动,时间比较开始时间和当前时间;暂停时间完全被忽略 秒表可以从特定的动态值启动;类似PHP变量的内容如下: $time=“01:06:39” Javascript: var timer

在提问之前,我想告诉你,我已经搜索了相关主题的问题,但我的问题与其他问题不同。事实上,我正在构建一个“Javascript秒表”,但脚本中有一些问题我已经尝试并搜索过解决,但没有找到。秒表中存在以下问题:

  • 重新加载页面时,秒表会自动重新启动,即使计时器被“stop_btn”停止

  • 重新加载页面时,秒表自动重新启动,时间比较开始时间和当前时间;暂停时间完全被忽略

  • 秒表可以从特定的动态值启动;类似PHP变量的内容如下: $time=“01:06:39”

  • Javascript:

    var timer;
    var startTime;
    var isRunning = false;
    var waitedTime = 0;
    var stoppedTime = 0;
    
    function start() {
      if (isRunning) return;
      isRunning = true;
      startTime = parseInt(localStorage.getItem('startTime') || Date.now());
      if (timer) {
        waitedTime += (Date.now() - stoppedTime);
      }
      localStorage.setItem('startTime', startTime);
      timer = setInterval(clockTick, 100);
    }
    
    function stop() {
      isRunning = false;
      clearInterval(timer);
      stoppedTime = Date.now();
    }
    
    function reset() {
      isRunning = false;
      stoppedTime = 0;
      waitedTime = 0;
    
      clearInterval(timer);
      timer = undefined;
      localStorage.removeItem('startTime');
      document.getElementById('display-area').innerHTML = "00:00:00.000";
    }
    
    function clockTick() {
      var currentTime = Date.now(),
        timeElapsed = new Date(currentTime - startTime - waitedTime),
        hours = timeElapsed.getUTCHours(),
        mins = timeElapsed.getUTCMinutes(),
        secs = timeElapsed.getUTCSeconds(),
        ms = timeElapsed.getUTCMilliseconds(),
        display = document.getElementById("display-area");
    
      display.innerHTML =
        (hours > 9 ? hours : "0" + hours) + ":" +
        (mins > 9 ? mins : "0" + mins) + ":" +
        (secs > 9 ? secs : "0" + secs) + "." +
        (ms > 99 ? ms : ms > 9 ? "0" + ms : "00" + ms);
    };
    
    var stopBtn = document.getElementById('stop_btn');
    var startBtn = document.getElementById('start_btn');
    var resetBtn = document.getElementById('reset_btn');
    
    stopBtn.addEventListener('click', function() {
      stop();
    });
    startBtn.addEventListener('click', function() {
      start();
    });
    resetBtn.addEventListener('click', function() {
      reset();
    })
    start();
    

    有人能帮忙吗?

    您可以添加这个新变量,然后在start函数中使用它。如果定义了自定义时间,则本地存储或当前日期将被忽略

    var customStartTime = new Date() // enter your custom date in the Date() function.
    
    然后在start()函数中修改starttime


    您是否考虑过使用window.onload处理程序,在页面重新加载后可以从中加载秒表值,我认为这应该涵盖您提到的前两个问题。
    另外,当重新加载page stoppedTime时,变量将为0,请使用localStorage缓存stoppedTime。

    是的,这是有道理的!非常感谢。
    startTime = customStartTime || parseInt(localStorage.getItem('startTime') || Date.now());