递增1,然后是10,然后是100?

时间:2019-02-21 14:23:58

标签: javascript increment

因此,我试图在每次激活该功能的位置编写程序,本地存储中的'money'值将增加1。当我对其进行测试时,它的确将增加1。但是下次,它上升了10,然后上升了100。为什么?我找不到任何人遇到同样的问题。代码如下:

<script>
  function changeText() {
    localStorage.setItem("money", localStorage.getItem("money") + 1);
    localStorage.setItem("map", true);
  }
</script>

3 个答案:

答案 0 :(得分:2)

localStorage.getItem("money")将返回一个字符串,因为它仅存储字符串。将数据添加到存储时,它会隐式转换为字符串。

您可以将字符串转换为数字,然后进行加法并存储值

function changeText() {
  if (localStorage.getItem('money') === null) {
    localStorage.setItem('money', 1)
  } else {
    localStorage.setItem("money", +localStorage.getItem("money") + 1)
  }

}

答案 1 :(得分:0)

尝试做-

<script>
  function changeText() {
    var money = parseInt(localStorage.getItem("money"));
    localStorage.setItem("money", money + 1);
    localStorage.setItem("map", true);
  }
</script>

parseInt string转换为number,因此如果您通过parseInt("1"),它将吐出1,其类型为数字。然后,您可以在数字中添加1

答案 2 :(得分:0)

您在那里最高!像这里提到的其他一样,localstorage可用于字符串,并将字符串转换为数字,只需使用代码中的以下操作即可将值返回为数字:

Number(your_string_number)

这应该为您工作:

<script>
  function changeText() {
    localStorage.setItem("money", Number(localStorage.getItem("money")) + 1);
    localStorage.setItem("map", true);
  }
</script>