因此,我试图在每次激活该功能的位置编写程序,本地存储中的'money'值将增加1。当我对其进行测试时,它的确将增加1。但是下次,它上升了10,然后上升了100。为什么?我找不到任何人遇到同样的问题。代码如下:
<script>
function changeText() {
localStorage.setItem("money", localStorage.getItem("money") + 1);
localStorage.setItem("map", true);
}
</script>
答案 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>