以最简单的形式:
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并重放游戏它将为null
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'的值:object is null或undefined
我可以在使用getItem之前将该项设置在同一个函数中,并且在那一刻它显然不是null但是它不会持续超过这一点......
答案 0 :(得分:0)
我在处理项目时遇到类似错误的问题。我注意到当我试图运行我的文件时,我会继续得到null或undefined的错误。一旦我将项目放在服务器上,就可以了。
此外,您已经拥有检索到的索引的变量。尝试将其用于支票,然后,如果分数较高,则设置新分数,如果不是,则将检索到的索引设置回本地存储。
IE的注释,如果你在尝试getItem时遇到错误,IE将不会传递当前方法/函数中的错误。当在IE中尝试getItem时,抛出一个try catch。 我希望这可以提供帮助。
另外,请尝试使用
localStorage.setItem('index0', JSON.stringify(newscore));
因为您已经创建了变量。