4

我有一些值动态存储在 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 的值?

4

2 回答 2

16

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

不需要类型转换。您还可以存储对象、布尔值和其他内容。只是不要忘记将东西保存回存储中,因为它不会自动执行此操作。

于 2012-07-07T14:06:27.637 回答
2

要解决 get 的问题01,只需将变量转换为数字:

var i = +localStorage.getItem('Counter'); // or +localStorage.Counter;

如果你想要一个增量键名,也可以使用下面的代码(前提是你不删除中间的键):

var keyname = 'Value' + localStorage.length;
localstorage.setItem(keyname, value);
于 2012-07-07T13:34:30.507 回答