以最简单的形式:
localStorage.setItem('index0', JSON.stringify(playerInventory[lootArray[0]]));
var retrievedIndex0 = localStorage.getItem('index0');
console.log('retrieved0:'+retrievedIndex0 ); //Displays correct amount
所以我认为它正在工作,但是如果我在使用 getItem 之前没有立即 setItem,它会返回 null,或者如果我 setItem,按 F5,'index0' 将变为 null ...
if(localStorage.getItem('index0') < playerInventory[lootArray[0]]) {
console.log('bingo! ');
localStorage.setItem('index0', JSON.stringify(playerInventory[lootArray[0]])); }
此 ^ 将输出“宾果!” 进入日志(在Firefox中),但setItem不更新localStorage。如果我重玩游戏,如果我在 getItem 之前不再次 setItem,它将为 null ...
这也将正确触发...
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]] 持有我想与 localstorage 比较的数字,并在它更高时更新到 localstorage....我使用该对象用当前值更新屏幕上的 div,所以我知道它持有我要保存/恢复的整数..........................
我刚刚在 IE 中进行了测试,但它根本不起作用。错误:即使是这篇文章顶部的基本第一部分也会引发错误。
SCRIPT5007:无法获取属性“getItem”的值:对象为空或未定义
我可以在使用 getItem 之前在同一个函数中设置项目,此时它显然不是空的,但它不会持续超过那个点......