Проблема в том, что вы помещали count
со значением -1
в LocalStorage
.
count = setLocalStorage('count', count - 1);
И после перезагрузки страницы вы продолжали вычитать 1
из -1
и получили -2
, которое ваше состояние count == -1
не смог поймать. Решение состоит в том, чтобы поместить следующее значение счетчика в LocalStorage
после того, как вы проверите, нужно ли вам продолжать таймер или нет.
<script type="text/javascript">
let count = 0;
let counter = null;
window.onload = function() {
initCounter();
};
function initCounter() {
// get count from localStorage, or set to initial value of 1000
count = Number(getLocalStorage('count')) || 5;
counter = setInterval(timer, 1000); //1000 will run it every 1 second
}
function setLocalStorage(key, val) {
if (window.localStorage) {
window.localStorage.setItem(key, val);
}
return val;
}
function getLocalStorage(key) {
return window.localStorage ? window.localStorage.getItem(key) : '';
}
function timer() {
const nextCount = count - 1
if (nextCount < 0) {
clearInterval(counter);
return;
}
count = setLocalStorage('count', nextCount);
const seconds = count % 60;
let minutes = Math.floor(count / 60);
let hours = Math.floor(minutes / 60);
minutes %= 60;
hours %= 60;
document.getElementById("timer").innerHTML = hours + " ore " + minutes + " min " + seconds + " sec";
}
</script>
<div id="timer"></div>
Надеюсь, это поможет:)