2014-09-02 107 views
0

嗨,大家好,我有一個表單,它接收數據如項目名稱,代碼等,所以當我按下輸入按鈕時...... iv使用json stringify並獲取警告存儲在本地存儲器中的內容。然而,當我點擊重置並創建一個新的項目,它只是顯示新的項目,有無論如何,我可以存儲在本地存儲創建的所有項目...?這是我編碼的一部分。我是個新手,所以請原諒,如果問題太簡單了如何使用json創建一個數組並存儲在本地存儲中

感謝

$('#myBox #EnterButton').click(function() { 
    ItemData = { 
     'ItemCode' : $('#ItemCode').val(), 
     'ItemName' : $('#ItemName').val() 
    }; 

    localStorage.ItemData=JSON.stringify(ItemData); 
    $('#myBox').slideUp(); 
}); 

...

$('#myBox2 #EnterButton').click(function() { 
    if (localStorage.ItemData) { 
     alert(localStorage.ItemData); 
     ItemData = JSON.parse(localStorage.ItemData); 
    } 

    if (ItemData.ItemCode) { 
     $('#myBox #ItemCode').val(ItemData.ItemCode); 
    } 

    if (ItemData.ItemName) { 
     $('#myBox #ItemName').val(ItemData.ItemName); 
    } 
}) 

,我已經宣佈的ItemData爲公用變量。希望它清楚。 TIA

+2

使用localStorage.setItem( '的ItemData',數據)和localStorage.getItem( '的ItemData') – 2014-09-02 07:09:23

+0

注意,'的ItemData = {}'是一個對象不是一個數組。 – GillesC 2014-09-02 07:16:11

回答

0

你必須組織你使用localStorage的方式(一個getter/setter類可能有助於維護)。從上面的代碼看來,你總是用剛插入的值覆蓋localStorage.ItemData。 解決方案是將localStorage.Items作爲一個數組,每當插入到數組中時,迭代它以查看它是否已經添加(例如基於itemCode)並覆蓋或插入新項目。

我認爲這足夠玩耍。比localStorage更高級的概念,用於稍微不同的purpuses會在瀏覽器中使用pouchdb - websql。

0

聽起來好像你想要存儲多個項目,你應該使用一個itemData對象數組。然後你必須解析這個(數組),然後使用類似Array.push(newItem)的東西,然後在保存之前再次將其字符串化。

var allItems = localStorage.getItem('ItemData'); 
if(allItems == null) { 
    localStorage.setItem('ItemData', JSON.stringify([ItemData])); 
} else { 
    allItems = JSON.parse(allItems); 
    allItems.push(ItemData); 
    localStorage.setItem('ItemData', JSON.stringify(allItems)); 
} 
相關問題