我有一些动态存储在localStorage的值,其增量值如下:localStorage [“Value0”],localStorage [“Value1”],....
当我尝试像这样访问它们时:
JavaScript的:
localStorage["Counter"]=0;
var i = localStorage["Counter"];
var d =localStorage["Value"+i];
i = i + 1; // i becomes "01"
var f = localStorage["Value"+i];
i的值是“01”而不是1 ...有没有办法正确增加i的值?
答案 0 :(得分:15)
LocalStorage只能存储字符串值。您可以使用parseInt将字符串转换为整数:
var new_value = parseInt(localStorage.getItem('num')) + 1
您还可以使用store.js等库自动为您执行操作。您所要做的就是包括库:
<script src="store.js"></script>
设置新存储空间:
var numbers = new Store("numbers")
把东西放进去:
numbers.set('num', 2)
获取价值并随意做任何事情:
numbers.get('num') + 1 //output: 3
你也可以发疯并使用一些数组:
numbers.set('nums', [1,2,3])
改变其中的内容:
numbers.get('nums')[0] + 3 //output: 4
无需转换类型。您还可以存储对象,布尔值和其他内容。只是不要忘记将内容保存在存储中,因为它不会自动执行此操作。
答案 1 :(得分:2)
要解决获取01
的问题,只需将变量转换为数字:
var i = +localStorage.getItem('Counter'); // or +localStorage.Counter;
如果您想要增量密钥名称,也可以使用以下代码(前提是您不删除其间的密钥):
var keyname = 'Value' + localStorage.length;
localstorage.setItem(keyname, value);