0
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 单击的对象的完成值?

4

1 回答 1

0

正如上面评论中提到的,DOM 对象没有done属性。我不完全确定您要做什么,但是为了获取 DOM 对象的 class 属性的内容,您应该使用该className属性。例如:

var done = spanClicked.parentElement.className;

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

于 2013-02-21T21:06:02.177 回答