У меня есть таймер javascript, который работает некорректно. Когда я вставляю его в свой браузер, секунды немного отскакивают. Я считаю, что это может быть связано с тем, что миллисекунды не преобразуются правильно в секундах/минутах/часах, но я не уверен. Вот мой код:Javascript секундомер/таймер прыгает
var link = userLink + '/games/' + $scope.currentGame;
ref.child(link).once('value', function(snapshot) {
var game = snapshot.val();
var startTime = Date.parse(game.started);
var timeNow = Date.now();
var timeLapsed = (timeNow - startTime);
var mydate = new Date(timeLapsed);
var humandate = mydate.getUTCHours()+ " hours, " + mydate.getUTCMinutes()+ " minutes and " + mydate.getUTCSeconds()+ " second(s)";
console.log(humandate);
console.log(mydate.getUTCHours())
var timeVar = document.getElementById('timer'), seconds = mydate.getUTCSeconds(), minutes = mydate.getUTCMinutes(), hours = mydate.getUTCHours(), time;
function add() {
seconds++;
if (seconds >= 60) {
seconds = 0;
minutes++;
if (minutes >= 60) {
minutes = 0;
hours++;
}
}
timeVar.textContent = (hours ? (hours > 9 ? hours : "0" + hours) : "00") +
":" + (minutes ? (minutes > 9 ? minutes : "0" + minutes) : "00") +
":" + (seconds > 9 ? seconds : "0" + seconds);
timer();
}
function timer() {
var time = setTimeout(add, 1000);
}
timer();
});
Начальное время запуска хватает из firebase базы данных по стойкости (таймер предназначен как часть игры), а затем следующие функции приращения времени. Любая помощь будет оценена по достоинству. Благодарю.
1. Пожалуйста, используйте редактор фрагментов для создания фактических рабочих часов. 2. Таймеры JS, как известно, зависят от того, что еще происходит – mplungjan
Даже если речь идет о 'setTimeout', это все равно дубликат этого: http://stackoverflow.com/questions/8173580/setinterval-timing-slowly-drifts -away-from-stay-exact –
см. здесь: https://github.com/developer82/javascript-stopwatch/blob/master/stopwatch.js посмотреть, поможет ли это – developer82