Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript html5本地存储没有按我想要的方式工作_Javascript_Html - Fatal编程技术网

Javascript html5本地存储没有按我想要的方式工作

Javascript html5本地存储没有按我想要的方式工作,javascript,html,Javascript,Html,我正在使用HTML5的localstorage保存两个变量,并在用户刷新页面时加载它们,但在加载保存的项目时,有些东西无法正常工作: 风险值: var cookies = 0; var cursors = 0; 保存代码: window.setInterval(function(){ var save = [cookies, cursors]; localStorage["save"] = JSON.stringify(save); console.log("Save

我正在使用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] 保存的游戏 等等

在body load
时调用
load()
函数(

我确实收到控制台消息“Loaded game”…

您的本地存储访问没有问题。此外,如果您正在寻找的是本地存储,则无需尝试会话存储

我认为问题在于你如何处理你的数据

根据您的代码判断,您正在读取localStorage数据并将其存储到名为
state
的局部变量中,并且对其不做任何处理

事实:如果您真的要用

localStorage[“save”]=JSON.stringify(save);

然后

var state=JSON.parse(localStorage[“save”]);


如果在上一个代码段之后的任何时间执行,实际上都会工作。因此,如果您的应用程序实际上正在运行保存数据的代码段,那么稍后当您运行
load
函数时,局部变量
state
将包含内容
[0,0]

您的语法看起来不错。但是,JSLint建议在本地存储上使用点表示法:

localStorage.save = JSON.stringify(save);

然后,只需将状态变量添加到
控制台.log
语句中即可进行检查:

console.log("Loaded game: "+state);

请记住,您的值已保存为数组,因此您必须使用
状态[0]
状态[1]
来访问它们,以获取单个值。

[cookies,游标]
?什么是
cookies
游标
?您检查过项目是否正确序列化了吗?是的,请检查
JSON.stringify(save)
的输出。我看不出您当前的代码有问题。您没有说出什么问题。您是否在“状态”中得到任何东西。如果在Chrome上进行测试,则可以弹出开发工具(Ctrl-Shift-I)转到resources选项卡并在左侧窗格中选择localStorage。然后您应该看到存储了什么。那么,什么不起作用呢?使用点表示法的问题是您无法使用动态生成的键。我个人更喜欢使用
localStorage.setItem(键,值)
语法。
console.log("Loaded game: "+state);