2010-05-14 124 views
3

是否有可能使用相同的名稱可以有多個不同的值單獨存儲並顯示在列表中?使用localStorage存儲多個存儲

如:

function save() 
{ 
    var inputfield = document.getElementById('field').innerHTML; 
    localStorage['justified'] = inputfield; 
} 

<input type="text" id="field" onclick="save();" /> 

每當有人進入輸入字段的東西,然後點擊保存,在localStorage的將只保存值相同的名稱,然而,這是否衝突存儲的方式保存,就像被最新的輸入值所取代一樣?

此外,有什麼辦法來防止在清除緩存時清除localstorage?

回答

1

這是用一個非常簡單的測試頁很容易確定的。每個鍵只能存儲一個值,並且在清除緩存時這些值不會被清除。 (我剛剛試過火狐到目前爲止...)

您可以編寫自己的函數來完成其存儲在一個單一的關鍵值的列表:

function addToPersistentList(listName, value) { 
    var val = localStorage[listName] || []; 
    val.push(value); 
    localStorage[listName] = val; // THIS DOES NOT WORK 
} 

編輯哎呀只支持存儲的字符串廢話。確定好,如果你有json2你應該這樣做:

function addToPersistentList(listName, value) { 
    var val = localStorage[listName] ? JSON.parse(localStorage[listName]) : []; 
    val.push(value.toString()); 
    localStorage[listName] = JSON.stringify(val); 
} 

當然,如果你想存儲日期等

+0

試過Chrome,清除緩存不清除數據。但清除cookie「..和其他瀏覽器數據」清除它。 – JeroenEijkhof 2010-05-15 05:16:37

0

號可以存儲在localStorage的入口只有一個值這會導致問題。

有兩種方法來存儲一個關鍵詞背後更值:

  1. 使用localStorage['justified_0']localStorage['justified_1']等等。
  2. 在數組中存儲多個值並將其轉換爲JSON,然後再存儲在localStorage['justified']中,並在讀取後將其轉換回數組。

清除緩存不會清除本地存儲。

7

其實localStorage'應該'能夠存儲整數,字符串和數組。我一直在一個記事本應用程序使用本地存儲和保存使用對象的文字我的所有數據:

var someData = { 
    withvars: "and values", 
    init: function() { 
     // not sure if this works but it should. 
    }, 
    var1: { 
     subvar1: "data", 
     subvar2: "data2" 
    } 
}; 

然後存儲它透過JSON.stringify():

localStorage.setItem(varName, JSON.stringify(someData)); 

然後用JSON日後訪問。解析():

var dataBack = JSON.parse(localStorage.getItem("varName")); 

如果你總是使用對象常量,那麼你將有較少的麻煩保持的如何存儲跟蹤和如何從localStorage的檢索數據。