javascript - 用 JSON 覆盖 localStorage

标签 javascript json html local-storage craftyjs

这是 this 的后续问题

我开始使用 localStorage 函数, 并且不确定它是否按预期工作。

我想覆盖我的 JSON 文件中的 bool 值。

Player在一个stage中点击exit,然后触发下一个stage的load, 但我也希望它能保存阶段已完成的事实。

这是我的 JSON 数组,默​​认情况下定义所有地牢都是不完整的:

var dungeon_prog = {
"dungeon0_prog" : {
    "complete" : true
},
"dungeon1_prog" : {
    "complete" : false
},
"dungeon2_prog" : {
    "complete" : false
}
};

然后我将它设置为本地存储:

localStorage.setItem('dungeon_prog', JSON.stringify(dungeon_prog));
var dungeon_prog_obj = JSON.parse(localStorage.dungeon_prog);

我希望它在玩家到达地牢 1 的导出时将 dungeon1_prog "complete"false 覆盖为 true

我该怎么做? 默认的“假”语句是否实际保存在 localStorage 中? 谢谢。

最佳答案

dungeon_prog_obj 现在包含您的 JSON 对象。要回答您的最后一个问题,是的 - localStorage 保存了整个 JSON 字符串,因此它也保存了 bool 值。

要覆盖它,您只需设置 bool 值并将它们再次保存到同一个 localStorage 项目:

dungeon_prog_obj.dungeon1_prog.complete = true;
localStorage.setItem('dungeon_prog', JSON.stringify(dungeon_prog_obj));

编辑:

根据要求更新以回答评论中的问题。

我不是 100% 确定这是问题所在,但您是说在页面刷新时 true 值不会持续存在。唯一合理的解释是,在每次加载页面时,您都使用 localStorage.setItem('dungeon_prog', JSON.stringify(dungeon_prog)); 将 JSON 覆盖为初始页面,其中 dungeon_prog 是您问题中指定的初始 JSON。

如果您在 localStorage 中有该项目,您应该检查负载而不是这样做。您可以通过以下方式执行此操作:

// Check for object in localStorage
var dungeon_prog = JSON.parse(localStorage.dungeon_prog);

// If it does not exist, initialize it and save it
if (dungeon_prog != null) {
    dungeonProg = {
        "dungeon0_prog" : {
            "complete" : true
    },
    "dungeon1_prog" : {
        "complete" : false
    },
    "dungeon2_prog" : {
        "complete" : false
   }
   };

   localStorage.setItem('dungeon_prog', JSON.stringify(dungeon_prog));
}

关于javascript - 用 JSON 覆盖 localStorage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20607817/

相关文章:

javascript - 如何使批处理文件等待 Excel 宏完成

php - 如何在 laravel 中返​​回一个响应对象 json

javascript - JSON.stringify 设置根元素

html - CSS: '+' 选择运算符不工作

html - 在 Rails 网络应用程序中,单击链接后样式会发生细微变化

javascript - 如何对 props 进行分组并使代码更具可读性?

c# - asp.net 中的RequiredFieldValidator有什么缺点吗?

html - 如何强制 <noscript> 内联并继承 CSS 样式?

php 与 html 和 javascript 通信

javascript - 将 JSON 值附加到Figcaption