Javascript Can';t在从本地存储获取的数字上加1
我有一些变量,比如XP或currentHp,它们在某些点上增加了1, 正常情况下,它们工作得很好,但当我将它们设置为本地存储,然后获取它们时,在它们应该增加1的点上,它们会在数字的末尾加上1。例如,如果XP=4,您保存游戏,然后加载您的保存,当您获得+1 XP时,它会像41411。。。不是5,6。。。为什么会发生这种情况?我怎样才能修好它?我像这样保存和加载XPJavascript Can';t在从本地存储获取的数字上加1,javascript,Javascript,我有一些变量,比如XP或currentHp,它们在某些点上增加了1, 正常情况下,它们工作得很好,但当我将它们设置为本地存储,然后获取它们时,在它们应该增加1的点上,它们会在数字的末尾加上1。例如,如果XP=4,您保存游戏,然后加载您的保存,当您获得+1 XP时,它会像41411。。。不是5,6。。。为什么会发生这种情况?我怎样才能修好它?我像这样保存和加载XP localStorage.setItem("XP", XP); XP= localStorage.getItem(
localStorage.setItem("XP", XP);
XP= localStorage.getItem("XP");
保存到
localStorage
的值始终保存为字符串。在执行任何算术之前,您需要将它们解析为数字。试试这个:
constoldxp=4;
setItem(“XP”,oldXp);
const xp=parseInt(localStorage.getItem(“xp”);
const newXp=xp+1;
console.log(newXp);//5不是“41”
保存到localStorage
的值始终保存为字符串。在执行任何算术之前,您需要将它们解析为数字。试试这个:
constoldxp=4;
setItem(“XP”,oldXp);
const xp=parseInt(localStorage.getItem(“xp”);
const newXp=xp+1;
console.log(newXp);//5不是“41”
您需要使用json.parse
链接
您需要使用
json.parse
链接
将
+
添加到XP=localStorage.getItem(“XP”)代码>将值转换为数字。然后你可能会得到想要的结果。否则JS将其视为字符串
最后,您的代码应该如下所示:
XP=+localStorage.getItem(“XP”)
将+
添加到XP=localStorage.getItem(“XP”)代码>将值转换为数字。然后你可能会得到想要的结果。否则JS将其视为字符串
最后,您的代码应该如下所示:
XP=+localStorage.getItem(“XP”)代码>当您在localstroage中保存数字时,其类型将更改为字符串,在检索回来时,它会将数字值作为字符串提供给您,因此其结果是concats而不是add
您可以使用任何现有的方法将字符串转换为数字,或者简单地将+号放在数字之前,如下所示
const oldXp = 4;
localStorage.setItem("XP", oldXp);
const v = localStorage.getItem("XP")
const newVal = (+v) + 1
console.log(newVal) // result will be 5
当您在localstroage中保存number时,它的类型将更改为string,在检索回来时,它会将number值作为string提供给您,这样它的concats结果而不是add
您可以使用任何现有的方法将字符串转换为数字,或者简单地将+号放在数字之前,如下所示
const oldXp = 4;
localStorage.setItem("XP", oldXp);
const v = localStorage.getItem("XP")
const newVal = (+v) + 1
console.log(newVal) // result will be 5
localStorage.setItem(“XP”、“XP”)代码>localStorage.setItem(“XP”、“XP”)代码>