LocalStorage с Json.stringify не сохраняется - PullRequest
0 голосов
/ 20 декабря 2011

В простейшей форме:

localStorage.setItem('index0', JSON.stringify(playerInventory[lootArray[0]]));

var retrievedIndex0 = localStorage.getItem('index0');
console.log('retrieved0:'+retrievedIndex0 );  //Displays correct amount

Так что я подумал, что это работает, но потом, если я не установил setItem непосредственно перед использованием getItem, он возвращает ноль, или, если я установил setItem, нажмите F5, 'index0 'становится нулевым ...

if(localStorage.getItem('index0') <  playerInventory[lootArray[0]]) { 
console.log('bingo! '); 
localStorage.setItem('index0', JSON.stringify(playerInventory[lootArray[0]])); }

Это ^ будет выводить' bingo! 'в журнал (в Firefox), но setItem не обновляет localStorage.Если я воспроизведу игру, то будет нулевым, если я не установлю сноваII до установки getItem ...

Это также будет срабатывать корректно ...

var oldscore = localStorage.getItem('index0');
var newscore = playerInventory[lootArray[0]]; 
if(oldscore < newscore) { console.log('new high score');}

Но setItem не будетобновите localStorage .... и если я нажму f5 и воспроизведу игру, будет ноль

if(oldscore < newscore) { 
console.log('new high score'); //This fires

localStorage.setItem('index0', JSON.stringify(playerInventory[lootArray[0]])); //this doesnt
}

, если я пойду в свой основной цикл update () и поставлю:

console.log(localStorage.getItem('index0')); //returns null
console.log(localStorage.getItem.index0);  //returns undefined

Кто-нибудь видит что-то не так или у меня есть другие тесты, которые я мог бы сделать?

playerInventory [lootArray [0]] содержит число, которое я хочу использовать, сравнить с localalstorage и обновить до localalstorage, когда оно выше ....Я использую этот объект для обновления div на моем экране с текущим значением, поэтому я знаю, что он содержит целое число, которое я хочу сохранить / восстановить .................................

Я только что проверил в IE, и это не работает, все ошибки: Даже основная первая часть в верхней частиэто сообщение выдает ошибку.

SCRIPT5007: невозможно получить значение свойства 'getItem': объект имеет значение null или не определено

Я могу установить элемент вта же функция перед использованием getItem, и в этот момент она явно не равна нулю, но она не сохраняется после этой точки ......

1 Ответ

0 голосов
/ 10 февраля 2012

У меня были похожие проблемы с этой ошибкой, когда я работал над проектом.Я заметил, что, когда я пытался просто запустить свой файл, я продолжал получать ошибку, будучи нулевым или неопределенным.Как только я поместил свой проект на сервер, он заработал.

Кроме того, у вас уже есть переменная для извлеченного индекса.Попробуйте использовать это для своих проверок, затем, если оценка выше, установите новую оценку, если нет, установите полученный индекс обратно в локальное хранилище.

Примечание для IE, если вы получаете ошибки, когдапытаясь получитьItem, IE не будет передавать ошибки в текущем методе / функции.При попытке получить элемент в IE, попытайтесь поймать его.Я надеюсь, что это может помочь.

Также попробуйте использовать

localStorage.setItem('index0', JSON.stringify(newscore));

, поскольку у вас уже есть созданная переменная.

...