Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.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_Timer - Fatal编程技术网

简单的JavaScript定时器函数

简单的JavaScript定时器函数,javascript,timer,Javascript,Timer,因此,我编写了一个计时器,当页面加载时启动,当用户单击“完成”按钮时停止 无法使用setInterval计算时间,因为它不精确,但可以使用setInterval计算日期时间开始和日期时间停止的差值(以秒为单位),并更新页面上的计时器div JS: HTML: 停止 如果您能在一行中完成这项工作,那么最好在询问时这样做。只需减去毫秒,然后转换成小时/分钟/秒。 <br><button id = "finish" onclick = "stopTimer();">

因此,我编写了一个计时器,当页面加载时启动,当用户单击“完成”按钮时停止


无法使用
setInterval
计算时间,因为它不精确,但可以使用
setInterval
计算日期时间开始和日期时间停止的差值(以秒为单位),并更新页面上的计时器div

JS:

HTML:


停止

如果您能在一行中完成这项工作,那么最好在询问时这样做。只需减去毫秒,然后转换成小时/分钟/秒。
    <br><button id = "finish" onclick = "stopTimer();">Done</button>
//Stop timer function
function stopTimer() {
    clearInterval(time);
}

//Start timer function
var secTime = 0,
      minTime = 0,
      hourTime = 0;

var time =  setInterval(function(){
    var maxSec = 59,
        maxMin = 59,
        maxHour = 59;
if(secTime > maxSec){
      minTime++;
      if(minTime > maxMin){
        hourTime++;
        if(hourTime > maxHour){
          hourTime = 0;
          minTime = 0;
          secTime = 0;
        }
        minTime = 0
      }
      secTime = 0;
    }    
        var newSec = (secTime.toString().length == 1) ? '0' + secTime : secTime,
            newMin = (minTime.toString().length == 1) ? '0' + minTime : minTime,
            newHour = (hourTime.toString().length == 1) ? '0' + hourTime : hourTime;

        document.getElementById('timer').innerHTML = newHour + ':' + newMin + ':' + newSec;

    secTime++;    
}, 1000);
var dateTimeStart = new Date();
var intervalId;
var seconds = 0;

function start(){
    updateTimer();
    intervalId = setInterval(function(){
      seconds = Math.floor((new Date() - dateTimeStart) / 1000);
        updateTimer();
    }, 1000);
}

function stop(){
    clearInterval(intervalId);
}

function updateTimer(){
    var date = new Date(1970, 0, 1);
    date.setSeconds(seconds);
    document.getElementById('timer').innerHTML = format(date);
}

function format(date){
  return twodigits(date.getHours()) + ':' + twodigits(date.getMinutes()) + ':' + twodigits(date.getSeconds());
}

function twodigits(number){
    var str = '0' + number;
    return str.substr(-2);
}

function action(name){
    document.getElementById('action').innerHTML = name;
}

start();
<div id="timer"></div>
<button type="button" onclick="stop();">STOP</button>