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单击的对象的done值?
发布于 2013-02-22 05:06:02
正如在上面的注释中提到的,DOM对象上没有done属性。我不完全确定您要做什么,但是为了获取DOM对象的类属性的内容,您应该使用className属性。例如:
var done = spanClicked.parentElement.className;话又说回来,根据您发布的代码,这似乎没有任何意义。我假设您想要使用本地存储来跟踪待办事项列表中的哪些项目已经完成。在这种情况下,存储所有已完成项的id数组不是更好吗(或者相反)?您不能将数组直接存储在本地存储中,但是可以使用例如JSON.stringify()来获取数组的字符串表示形式,然后可以存储该字符串。
https://stackoverflow.com/questions/15010788
复制相似问题