我写了一个无法正常工作的计时器方法.它应该显示在表单上经过的时间,但它按2或3计数而不是每秒计数一次.什么可能导致这种行为,我该如何解决?
我的代码:
function startTimer() {
var minutes, seconds;
setInterval(function () {
if (!isPaused) {
minutes = parseInt(timer / 60, 10);
seconds = parseInt(timer % 60, 10);
minutes = minutes < 10 ? "0" + minutes : minutes;
seconds = seconds < 10 ? "0" + seconds : seconds;
$('#TimeLabel').text("Form Time: " + minutes + ":" + seconds);
++timer;
}
}, 1000);
}
上面的代码显示“表格时间:00:01”,然后是“表格时间:00:04”,然后是“表格时间:00:07”等.
最佳答案 这是我想出的一个例子.它使用时间,以便不依赖于setInterval的准确性.希望这可以帮助!
function startTimer(){
var minutes,
seconds;
var startTime = new Date;
setInterval(function(){
var currentTime = new Date;
seconds = currentTime.getSeconds() - startTime.getSeconds();
if(seconds < 0){
seconds += 60;
}else if(seconds === 0){
minutes = currentTime.getMinutes() - startTime.getMinutes();
}
console.log(minutes + ':' + seconds);
}, 100);
}
startTimer();