html5 localstorage不按我想要的方式工作

时间:2014-10-15 13:36:24

标签: javascript html5

我正在使用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()">时被调用 我得到控制台消息“加载游戏”......

2 个答案:

答案 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]访问它们才能获取各个值。