我正在使用HTML5的localstorage来保存两个变量,并在用户刷新页面时加载它们,但是在加载保存的项目时某些内容无法正常工作:
变种的:
var cookies = 0;
var cursors = 0;
保存代码:
window.setInterval(function(){
var save = [cookies, cursors];
localStorage["save"] = JSON.stringify(save);
console.log("Saved game");
}, 1000);
加载代码:
function load() {
var state = JSON.parse(localStorage["save"]);
console.log("Loaded game");
}
我的控制台在页面加载时显示的内容: [13,1] 加载游戏 [0,0] 保存的游戏 [0,0] 保存的游戏 [0,0] 保存的游戏 等
load()
函数在正文加载(<body onload="load()">
时被调用
我得到控制台消息“加载游戏”......
答案 0 :(得分:0)
您的localStorage访问没有任何问题。此外,如果localStorage是您要查找的内容,则无需尝试sessionStorage。
我认为问题在于您如何处理数据。
根据您的代码判断,您正在读取localStorage数据并将其存储到名为state
的局部变量中,并且不再对其进行任何操作。
事实:如果你真的想用
将数据保存到localStorage localStorage["save"] = JSON.stringify(save);
然后
var state = JSON.parse(localStorage["save"]);
实际上会起作用。因此,如果您的应用程序实际上是在运行保存数据的代码段,那么稍后当您运行load
函数时,本地变量state
将具有内容[0, 0]
。< / p>
答案 1 :(得分:0)
你的语法似乎很好。但是,JSLint建议在localStorage上使用点表示法:
localStorage.save = JSON.stringify(save);
和
var state = JSON.parse(localStorage.save);
然后您可以将状态变量添加到console.log
语句中进行检查:
console.log("Loaded game: "+state);
请注意,您的值已保存为数组,因此您必须使用state[0]
和state[1]
访问它们才能获取各个值。