localStorage方法

时间:2013-02-21 19:39:24

标签: javascript local-storage

function Todo(id, task, who, dueDate) {
    this.id = id;
    this.task = task;
    this.who = who;
    this.dueDate = dueDate;
    this.done = false;
}    

function updateDone(e) { 
      var spanClicked = e.target;
      var id = spanClicked.parentElement.id;
      var done = spanClicked.parentElement.done;
      spanClicked.innerHTML = " ✔ ";
      spanClicked.setAttribute("class", "done");

      var key = "todos" + done;
      localStorage.setItem(key, "true");
      console.log(key);
    }

在最后一个函数的第二部分中,当我点击localStorage对象时,我正在尝试将done属性的值更改为“true”。相反,当我在Web控制台中检查localStorage时,该对象的值不会改变,而是将另一个对象添加到名为“todosundefined:'true'”的localStorage中。我不明白为什么当我点击一个对象的东西被添加到localStorage作为一个单独的,未定义的对象而不是更改我单击的对象的值。有任何修改它的建议,以便我更改我为localStorage点击的对象的完成值吗?

1 个答案:

答案 0 :(得分:0)

如上面的评论所述,DOM对象上没有done属性。我不完全确定你要做什么,但为了获取DOM对象的class属性的内容,你应该使用className属性。 E.g:

var done = spanClicked.parentElement.className;

然后,根据您发布的代码,这似乎没有任何意义。我假设你想使用本地存储来跟踪完成todo列表中的哪些项目。在这种情况下,仅存储已完成(或相反)的所有项目的id数组不是更好吗?您不能将数组直接存储在本地存储中,但是您可以使用例如JSON.stringify()来获取您可以存储的数组的字符串表示。