Вход

Просмотр полной версии : При обновлении что бы не обнулялся таймер


neowaring
27.07.2019, 10:11
Как сделать что бы при обновлении страницы, таймер не обнулялся а продолжал считать от значения которое насчитал на предыдущей странице ?
<script>
const isLapsed1 = "isLapsed1" in localStorage;
const minutesLabel = document.getElementById("minutes");
const secondsLabel = document.getElementById("seconds");
const infoElement = document.getElementById("info");
const info1Element = document.getElementById("pervii16");

if(isLapsed1) {
infoElement.hidden = false;
} else {
const startTime = Date.now();

(function loop() {

const passedSeconds = 0.001 * (Date.now() - startTime);
secondsLabel.innerHTML = parseInt(passedSeconds % 100).toString().padStart(1, "0");
minutesLabel.innerHTML = parseInt(passedSeconds / 100).toString().padStart(1, "0");

if(passedSeconds >= 2000) {
infoElement.hidden = false;
info1Element.hidden = true;
localStorage.isLapsed1 = true;
} else {
infoElement.hidden = true;
info1Element.hidden = false;
setTimeout(loop, 500);
}
})();
}
</script>

Malleys
27.07.2019, 17:46
Вам нужно запомнить время начала! Поменял 11 и 12 строчки!

<script>
const isLapsed1 = "isLapsed1" in localStorage;
const minutesLabel = document.getElementById("minutes");
const secondsLabel = document.getElementById("seconds");
const infoElement = document.getElementById("info");
const info1Element = document.getElementById("pervii16");

if(isLapsed1) {
infoElement.hidden = false;
} else {
const startTime = "startTime" in localStorage ? Number(localStorage.startTime) : Date.now();
localStorage.startTime = startTime;

(function loop() {
const passedSeconds = 0.001 * (Date.now() - startTime);
secondsLabel.innerHTML = parseInt(passedSeconds % 100).toString().padStart(1, "0");
minutesLabel.innerHTML = parseInt(passedSeconds / 100).toString().padStart(1, "0");

if(passedSeconds >= 2000) {
infoElement.hidden = false;
info1Element.hidden = true;
localStorage.isLapsed1 = true;
} else {
infoElement.hidden = true;
info1Element.hidden = false;
setTimeout(loop, 500);
}
})();
}
</script>