使用下面的代码,如果没有定义,我使用quote = 1的键创建一个localstorage变量。但是,当最终使用相同的引用键再次调用它时,即使使用Number()函数,它也会变为11而不是2。
if (typeof localStorage[quote] == "undefined") {
localStorage[quote] = Number(1);
} else {
localStorage[quote] += Number(1);
}
alert(localStorage[quote]);
有什么想法吗?
答案 0 :(得分:3)
听起来好像正在成为" 11"不是11.在检索周围包装parseInt()或Number():
localStorage[quote] = Number(localStorage[quote]) + 1;
以下评论编辑。
来自MDN(强调我的):
https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage
描述DOM存储机制是字符串的一种方式 密钥/值对可以安全地存储,然后检索以供使用
答案 1 :(得分:3)
因为localStorage按字符串存储。 typeof window.localStorage.getItem(quote); //" string&#34 ;;
所以" 1" + 1 =" 11"。
如果您想存储号码,则需要转换为数字。
希望它能帮助
答案 2 :(得分:2)
+
是数字的运算符(添加两个数字)以及字符串的连接运算符(将字符串2连接到字符串1),具体取决于操作数的类型
在您的情况下,localStorage [key]将始终返回一个字符串,因此将使用连接运算符。并"1" + 1 == "11"
因此,您应该在使用+
运算符之前将检索到的值转换为int
localStorage[quote] = parseInt(localStorage[quote], 10) + 1;