2011-12-20 3 views
0

в его простейшей форме:LocalStorage с JSON.stringify не сохраняющиеся

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]])); } 

Этот^будет выдавать 'бинго!' в журнал (в firefox), но setItem не обновляет localStorage. Если бы я повторить игру, это будет пустой, если я не SetItem снова перед 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 
} 

если я иду к моему основному обновление() цикл, и положить:

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

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

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

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

SCRIPT5007: Не удалось получить значение свойства «GetItem»: объект пустым или неопределенным

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

ответ

0

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

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

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

Кроме того, попробуйте использовать

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

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