2014-07-14 81 views
0

我只是盯着建立一個列表。我的做法是將數據保存在第一個選項卡中並在第二個選項卡上顯示。我能夠將數據保存到本地存儲。但是數據越來越難以滿足我的需求。任何想法,我犯了錯誤。值正在越過wile保存數據到本地存儲

這裏是我的jsfiddle

http://jsfiddle.net/saorabh/RmCA7/

使用了HTML是

<form id="todo-form"> 
       <input type="text" name="t_title" id="t_title" placeholder="Title" /> 
       <textarea placeholder="Description" name="t_description" id="t_description"></textarea> 
       <input type="button" class="btn btn-primary" value="Add Task"/> 
       </form> 

要保存的數據我的JavaScript

$(".btn-primary").click(function(){ 
    var formId = ("todo-form"); 
var inputs = $("#" + formId + " :input"), 
      id, title, description, tempData, 
      data = {} ; 

     title = inputs[0].value; 
     description = inputs[1].value; 

     id = new Date().getTime(); 

     tempData = { 
      id : id, 
      title: title, 
      description: description 
     }; 

     // Saving element in local storage 
     data[id] = tempData; 
     localStorage.setItem("todoData", JSON.stringify(tempData)); 

}); 
+0

'localStorage.setItem(「todoData」,JSON.stringify(tempData));' - 我記得,localStorage像散列表一樣工作。所以每次你重寫相同密鑰的值。所以你在localStorage中總是隻有一對(鍵 - 值)。您應該使用不同的鍵或將數值作爲數組,將新數據添加到此數組的末尾 – Regent

+0

您正在爲同一個key = todoData保存數據,因此每次單擊按鈕時它都會覆蓋。使用不同的鍵進行不同的點擊。 –

+0

是的,這就是爲什麼我生成id = new Date()。getTime()。使每個條目都獨一無二。 – Soarabh

回答

1

的localStorage的是鍵/值對存儲,所以對於每個鍵你只能有一個值。

您總是將該值設置爲「todoData」鍵,因此您總是將最後一個值替換爲當前值。

如果您打算只對一個數據使用一個密鑰,那麼您應該從LocalStore中解析出您的JSON,然後附加第二個項目並將它們再次存儲在LocalStorage上。或者你可以使用多個鍵。

除此之外,還有在你的代碼的兩個問題:

  • 要保存錯了對象,你應該保存data而不是 tempData
  • 你是不是從 localStorage的重現data對象當頁面加載時

http://jsfiddle.net/RmCA7/4/

+0

可以提供jsFiddle嗎? –

+0

我更新了答案 – Luizgrs