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点击的对象的完成值吗?
答案 0 :(得分:0)
如上面的评论所述,DOM对象上没有done
属性。我不完全确定你要做什么,但为了获取DOM对象的class属性的内容,你应该使用className
属性。 E.g:
var done = spanClicked.parentElement.className;
然后,根据您发布的代码,这似乎没有任何意义。我假设你想使用本地存储来跟踪完成todo列表中的哪些项目。在这种情况下,仅存储已完成(或相反)的所有项目的id数组不是更好吗?您不能将数组直接存储在本地存储中,但是您可以使用例如JSON.stringify()来获取您可以存储的数组的字符串表示。