2012-07-07 49 views
4

遞增值I具有被動態地存儲在localStorage的像這樣的遞增值的一些值:localStorage的[ 「Value0」],localStorage的[ 「值1」],....如何在localStorage的

當我嘗試訪問他們像這樣:

的JavaScript:

localStorage["Counter"]=0; 
var i = localStorage["Counter"]; 
var d =localStorage["Value"+i]; 
i = i + 1; // i becomes "01" 
var f = localStorage["Value"+i]; 

俺的值是「01」不是1 ...有沒有辦法正確地遞增我的價值?

+2

請顯示你的實際代碼,因爲你的例子可能是'錯誤的',因爲當你設置'i = 0'然後用'i = i + 1'增加它時,你最終無法字符串「01」 – 2012-07-07 13:36:35

+0

現在,這是實際的代碼。 – 2012-07-07 13:39:45

+2

因爲它被存儲爲字符串,所以你必須解析它。 'parseInt函數(localStorage的[ 'value0'])'; – activars 2012-07-07 13:40:56

回答

14

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 

沒有類型轉換需要。你也可以存儲對象,布爾值和其他東西。只是不要忘記將東西存回存儲器,因爲它不會自動執行。

2

要解決越來越01的問題,只需將變量轉換爲數字:

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

如果你想要一個增量鍵名,下面的代碼也可以使用(前提是你不刪除鍵之間):

var keyname = 'Value' + localStorage.length; 
localstorage.setItem(keyname, value); 
+0

您可以使用'parseInt()' – 2012-07-07 13:35:01

+1

將字符串轉換爲數字,您也可以'i = i | 0;'要轉換爲整數 – 2012-07-07 13:35:36

+2

@padde'1 *','+','~~'和[許多其他](http://stackoverflow.com/a/8112802/938089?are-there-are-根據條件,使用這種方法來轉換一個字符串的任何副作用)。 – 2012-07-07 13:35:40