Javascript Can';t在从本地存储获取的数字上加1

Javascript 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(

我有一些变量,比如XP或currentHp,它们在某些点上增加了1, 正常情况下,它们工作得很好,但当我将它们设置为本地存储,然后获取它们时,在它们应该增加1的点上,它们会在数字的末尾加上1。例如,如果XP=4,您保存游戏,然后加载您的保存,当您获得+1 XP时,它会像41411。。。不是5,6。。。为什么会发生这种情况?我怎样才能修好它?我像这样保存和加载XP

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”)