Javascript:localStorage 使 if 语句瘫痪?
Javascript: localStorage paralyzes if-statements?
制作了一个布尔变量“disableReplaceDate”,用于 if 语句。必须以某种方式保存变量,因为页面会重新加载,我需要将它用于 "check a status" 之类的,所以它不会 return 每次页面重新加载时默认。
然后,为了节省我自己很多时间和麻烦,因为我不能将它们作为参数发送到 URL 中(它已经被一个复杂的 java 文件占用了,它操纵了这一切而且我根本不擅长 java),我决定使用 window.localStorage setItem、getItem 和 removeItem 等,所以基本上
var disableReplaceDate = false;
window.localStorage.setItem("dRD", false);
disableReplaceDate = window.localStorage.getItem("dRD");
但现在是 if 语句,如下所示:
if(disableReplaceDate == true){/*do some stuff*/}
没有用了!但是当我把它改成
if(disableReplaceDate){/*do some stuff*/}
它突然开始工作。
如果这还不够离奇的话,它不会对所有使用变量的 if 语句执行此操作,我尝试将它们更改为 (!disableReplaceDate) 等,但这并不能使它们起作用。
这是为什么?我该如何解决?
localStorage 只存储字符串。 "false"
在需要布尔值的上下文中计算为 true
(例如 if
语句)。
你应该改变
disableReplaceDate = window.localStorage.getItem("dRD");
至
disableReplaceDate = window.localStorage.getItem("dRD") === "true";
我想是因为你的变量类型是 "string" 看这个
typeof(disableReplaceDate)
输出将是string
我认为你需要这样测试if(disableReplaceDate === "false")
制作了一个布尔变量“disableReplaceDate”,用于 if 语句。必须以某种方式保存变量,因为页面会重新加载,我需要将它用于 "check a status" 之类的,所以它不会 return 每次页面重新加载时默认。
然后,为了节省我自己很多时间和麻烦,因为我不能将它们作为参数发送到 URL 中(它已经被一个复杂的 java 文件占用了,它操纵了这一切而且我根本不擅长 java),我决定使用 window.localStorage setItem、getItem 和 removeItem 等,所以基本上
var disableReplaceDate = false;
window.localStorage.setItem("dRD", false);
disableReplaceDate = window.localStorage.getItem("dRD");
但现在是 if 语句,如下所示:
if(disableReplaceDate == true){/*do some stuff*/}
没有用了!但是当我把它改成
if(disableReplaceDate){/*do some stuff*/}
它突然开始工作。
如果这还不够离奇的话,它不会对所有使用变量的 if 语句执行此操作,我尝试将它们更改为 (!disableReplaceDate) 等,但这并不能使它们起作用。
这是为什么?我该如何解决?
localStorage 只存储字符串。 "false"
在需要布尔值的上下文中计算为 true
(例如 if
语句)。
你应该改变
disableReplaceDate = window.localStorage.getItem("dRD");
至
disableReplaceDate = window.localStorage.getItem("dRD") === "true";
我想是因为你的变量类型是 "string" 看这个
typeof(disableReplaceDate)
输出将是string
我认为你需要这样测试if(disableReplaceDate === "false")