【问题标题】:Workaround for not being able to save booleans with HTML5 Web Storage无法使用 HTML5 Web Storage 保存布尔值的解决方法
【发布时间】:2013-12-30 06:45:41
【问题描述】:

我目前正在使用 Javascript 或更准确地说是 CraftyJS 制作一款马里奥风格的游戏。

我查看了here 作为参考, 并了解如何保存用户输入的值。 但我想要完成的是自动保存某些布尔值(它们被称为什么?),或者当玩家按下保存按钮或其他东西时。

例如,我有一个名为 dungeon1 的地下城,我创建了一个变量来表示地下城是否已经完成。

默认是var dungeon1 = false;

但是当玩家完成dungeon1时,它会变成var dungeon1 = true;, 从而为世界地图添加了新内容,例如通往地牢 2 的门户(这工作正常)。

我要保存的是这个var dungeon1 = true;语句,这样当用户再次打开游戏时,完成的地下城会被加载,对应的解锁会正确显示。我该怎么做? 有没有办法说,制作一个名为save.js的保存管理文件,然后在它们变为true时存储上述布尔值?

【问题讨论】:

  • @JustinWood 是的,我想在 HTML5 网络存储中使用本地存储方法。
  • 然后阅读我链接的文档。
  • @JustinWood 哦,我没有意识到这是一个链接。显然,这个方法目前只接受字符串,这意味着存储布尔值是不可能的。有什么解决方法吗?

标签: javascript html web-storage craftyjs


【解决方案1】:

您只需存储您想要的布尔值的字符串版本。

所以存储“true”和“false”,而不是像 if(variable) 那样检查,您必须以 if(variable === "true") 的形式检查。它有点笨拙,但您可以看到它并没有真正为您的代码增加更多复杂性。

如果这种类型的 if 检查只是冒犯了您的敏感性,那么在您从 localStorage 中“获取”它的代码中,您可以将其重新转换为布尔值。

var bool = (localStorage.getItem("myItem") === "true")

附言。你可以用布尔值 setItem ......它只会将它们转换为字符串:D 因为如果它们还不是字符串,它会调用 toString() 来存储它们。

所以你可以这样做:

enter code herelocalStorage.setItem("myItem", true)

【讨论】:

    猜你喜欢
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    相关资源
    最近更新 更多