我一直在为我的游戏制作一个保存文件。保存文件正常工作,console.log显示正确的值:
function saveGame(){
localStorage.setItem('game', JSON.stringify(game));
}
function loadGame(){
var retrievedObject = localStorage.getItem('game');
console.log('retrievedObject: ', JSON.parse(retrievedObject));
}
日志图片:https://s28.postimg.org/bslusmagt/Untitled.png
由于我几个月前开始学习JS,所以我还是新手。现在我的猜测是,当页面加载时,我应该设置所有这些值。尝试下一件事我在console.log中得到“null”
console.log(JSON.parse(localStorage.getItem('game.plutonium')));
我认为价值观可以设置为:
game.plutonium = localStorage.getItem('game.plutonium');
但它不起作用。这是什么诀窍?
以下是我的完整JS代码,以防万一:http://pastebin.com/yM2wz410
值从第1行定义,保存/加载文件在第350-356行。 为什么我的方法不起作用?
function saveGame(){
var savefile = JSON.stringify(game);
localStorage.setItem("game", savefile);
}
function loadGame(){
var savefile = localStorage.getItem("game");
if (savefile === null) {
return;
}
game = JSON.parse(savefile);
}
上面的方法似乎完全解决了这个问题。谢谢:))
答案 0 :(得分:0)
JSON.stringify()
将您提供的对象更改为字符串(可以非常容易地存储)。但是:您无法通过string.key
要将该json字符串转换回对象(可以再次导航),您需要使用JSON.parse()
。
上面的问题是,您使用密钥game
将整个对象(作为json)存储到存储中,然后尝试从存储中获取项game.plutonium
。请注意,您没有将任何内容保存为game.plutonium
。
您需要先通过localStorage.getItem('game')
获取整个json字符串,然后将字符串解析回一个对象,然后才能再次像game.plutonium
那样导航它。
var game = JSON.parse(localStorage.getItem('game'))
var plutonium = game.plutonium;