无法使用HTML5 Web存储保存布尔值的解决方法

Workaround for not being able to save booleans with HTML5 Web Storage

本文关键字:布尔值 保存 解决 方法 存储 Web HTML5      更新时间:2023-09-26

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

我把这里作为参考,并了解如何保存用户输入的值。但我想实现的是自动保存某些布尔值(这就是它们的名字吗?),或者当玩家按下保存按钮或其他什么的时候。

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

默认情况下为var dungeon1 = false;

但当玩家完成地下城1时,它变为var dungeon1 = true;,从而为世界地图添加了新的内容,比如一个通往地下城2的门户(这很好)。

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

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

因此,存储"true"answers"false",而不是像if(variable)那样进行检查,而是必须以if(variable==="true")的形式进行检查。这有点麻烦,但你可以看到它并没有真正给你的代码增加更多的复杂性。

如果这种类型的If检查只是冒犯了你的敏感度,那么在你从localStorage"获取"它的代码中,你可以将它重写为布尔值。

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

PS。可以使用布尔值设置Item。。。它只会将它们强制转换为字符串:D,因为如果它们还不是字符串,它会调用toString()来存储它们。

所以你可以做:

enter code here localStorage.setItem("myItem",true)