2011-09-27 74 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'里面。 –

相关问题