Что касается вашего кода, кажется, что вы всегда устанавливаете значение localstorage
. Вы должны проверить, существует ли значение из локального хранилища, прежде чем его заполнять. Это достигается с помощью метода getItem
в спецификации WebStorage, который явно возвращает null
, если элемент не существует. Согласно спецификации, если данный ключ не существует в списке, связанном с объектом, тогда этот метод должен возвратить нуль.
Я использовал функциональность session storage
, которая похожа на локальное хранилище - разница состоит в том, что жизненный цикл хранилища сеансов - это сеанс в браузере. Значение теряется, как только вы закрываете браузер. Я использовал методы хранения сеансов getitem
, setitem
и remvoveitem
для достижения функциональности. Надеюсь, это поможет.
<script type="text/javascript">
var p = document.getElementsByClassName('readTiming')[0],
seconds = 0, minutes = 0, hours = 0,
t;
function add() {
if (sessionStorage.getItem("timeStoreSeconds")) {
seconds = sessionStorage.getItem("timeStoreSeconds");
}
if (sessionStorage.getItem("timeStoreMinutes")) {
minutes = sessionStorage.getItem("timeStoreMinutes");
}
if (sessionStorage.getItem("timeStoreHours")) {
hours = sessionStorage.getItem("timeStoreHours");
}
seconds++;
sessionStorage.setItem("timeStoreSeconds", seconds);
if (seconds >= 60) {
seconds = 0;
sessionStorage.removeItem("timeStoreSeconds");
minutes++;
sessionStorage.setItem("timeStoreMinutes", minutes);
if (minutes >= 60) {
minutes = 0;
sessionStorage.removeItem("timeStoreMinutes")
hours++;
sessionStorage.setItem("timeStoreHours", hours);
}
}
p.textContent = (hours ? (hours > 9 ? hours : "0" + hours) : "00") + ":" + (minutes ? (minutes > 9 ? minutes : "0" + minutes) : "00") + ":" + (seconds > 9 ? seconds : "0" + seconds);
timer();
//localStorage.setItem("timeStore", p.textContent);
//getElementsByClassName('readTiming').innerHTML = localStorage.getItem("timeStore");
$("#readTime").val(p.textContent);
}
function timer() {
t = setTimeout(add, 1000);
}
timer();
</script>