2011-09-27 61 views
0

所以我一直在爲2個不同的本地存儲應用程序工作,我已經給了我一個任務。一個是todo列表,另一個是在同一個html文件上工作的筆記。使用2個html5本地存儲應用程序問題

現在,todo列表有3個localstrorage密鑰。一個是待辦事項的價值。第二個是待辦事項的順序(第一,第三,第三等),第三個是你通常有多少待辦事項。這就是3個不同的值。

對於筆記是1本地存儲鍵所有的值。 (見下圖)

現在的問題是:舉例來說,如果我有3個音符,然後我添加了一個待辦事項我得到這個在localStorage的:

enter image description here

此工作正常。

但是,如果我再添兩個音符,我得到這個:

enter image description here

這是合乎邏輯雖然最後兩個音符不顯示。

又如: enter image description here

這將不顯示任何註釋雖然有4

我不知道該如何解釋這一點,但基本上發生的事情是什麼都寫在todo-ID之後的本地存儲中,不顯示但注意到todoList保持完美。

我不是很確定問題是什麼,但我認爲它可能是它的鑰匙被加載的方式。也許 ???

因此,這裏是我如何加載註釋:

var initStickies = function initStickies() { 
    $("<div />", { 
     text : "+", 
     "class" : "add-sticky", 
     click : function() { createSticky(); } 
    }).prependTo(document.body); 
    initStickies = null; 
}, 
openStickies = function openStickies() { 
    initStickies && initStickies(); 
    for (var i = 0; i < localStorage.length; i++) { 
     createSticky(JSON.parse(localStorage.getItem(localStorage.key(i)))); 
    } 
} 

,這是我如何加載待辦事項列表:

orderList = localStorage.getItem('todo-orders'); 

orderList = orderList ? orderList.split(',') : []; 

for(j = 0, k = orderList.length; j < k; j++) { 
    $itemList.append(
     "<li id='" + orderList[j] + "'>" 
     + "<span class='editable'>" 
     + localStorage.getItem(orderList[j]) 
     + "</span> <a href='#'>X</a></li>" 
    ); 
} 

問題可能是什麼?有沒有人有過這個問題?

非常感謝大家的閱讀和抱歉。我想盡可能清楚。我一直在考慮如何解決這個問題很長一段時間,即將走向死路。希望可以有人幫幫我。再次感謝

回答

0

在筆記應用程序中,您嘗試遍歷localStorage中的每個項目並將它們解析爲JSON。當它獲取JSON字符串時,它會成功解析並繼續其工作。當它拿到你的待辦物品時,它會中斷並停止工作。如果你想在一個localStorage中同時使用todo和note,你最好有一些方法來區分它們。一種簡單的方法是將todo-作爲待辦事項項目的前綴(因爲您已完成)和note-作爲註釋項目的前綴。

一個可能的快速修復你的代碼是用try ... catch ...避免非JSON字符串破壞你的迭代:

for (var i = 0; i < localStorage.length; i++) { 
    try { 
     createSticky(JSON.parse(localStorage.getItem(localStorage.key(i)))); 
    } catch (error) { /* do nothing and just skip */ } 
} 
+0

這似乎是偉大的工作。我得到的唯一問題是,它會自動創建一個沒有標識但沒有內容的便籤。它只是模板。檢查這個圖像:http://i51.tinypic.com/xf2jo8.jpg。你知道它會是什麼嗎? – jQuerybeast

+0

你可以嘗試將你的代碼行分成兩行:var json = JSON.parse(...); createSticky(JSON);'。然後你可以在它們之間放置一個'console.log(json)'來查看json是否正確。如果它是正確的,那麼問題出現在'createSticky'裏面。 –