значение локального хранилища сбрасывается после обновления окна

#javascript

Вопрос:

У меня есть код ниже

 var amount = document.getElementById('downloads-t76a');

var current = 3700;
document.getElementById("downloads-t76a").innerHTML = localStorage.userTotal;

function update()
{
amount.innerText = format(current);
}

setInterval(function(){
current  = Math.floor(Math.random() * 10);
localStorage.setItem('userTotal', current);
update();
},2000);

function format(amount)
{
var d = Math.floor(amount).toString().split('');
var c = (Math.round((amount%1)*100)/100).toString().split('.')[1];
if(typeof c == 'undefined'){
    c = '00';
}else if(c.length == 1){
    c = c   '0';
}
var str = '';
for(i=d.length-1; i>=0; i--){
    str  = d.splice(0,1);
    if(i%3 == 0 amp;amp; i != 0) str  = ',';
}
return str;
}
 

В основном после первого перехода пользователя на сайт значение начинается с 3700, значение обновляется каждые 2 секунды. Проблема в том, что при обновлении значение окна снова начинается с 3700, но я хочу, чтобы оно было последним обновленным значением до обновления пользователя.

Комментарии:

1. Вы можете просто получить значение при загрузке страницы с помощью localStorage.GetItem . Затем установите его на 3700, если он не существует. Имейте в виду, что localStorage всегда возвращает строку, поэтому вам нужно разобрать ее на число после выполнения localStorage.getItem

Ответ №1:

При обновлении ваш скрипт запускается заново. Таким образом, ничто из предыдущего кода недоступно. Именно по этой причине вы используете localStorage.

 var storageValue = localStorage.getItem('userTotal') ;
var current = storageValue === null ? 3700 : ( JSON.parse(storageValue));
 

Использование оператора в качестве GetItem() возвращает строку DOMString. Нам нужно преобразовать его в число.