我有一个应用程序,我在其中向网页添加 li 元素。当我在网页上将元素标记为“完成”时,我需要在本地存储中将元素的类名更改为“完成”。(应该说完成:真的)。使用我当前的代码,我无意中在本地存储中制作了两项,一项已完成:true,另一项已完成:false。我将在这里展示我的代码:
function updateDone(e) {
var spanClicked = e.target;
var id = spanClicked.parentElement.id;
var done = spanClicked.parentElement.className;
spanClicked.innerHTML = " ✔ ";
spanClicked.setAttribute("class", "done");
var key = "todos" + id;
for(var i = 0; i < todos.length; i++) {
if(todos[i].id == id) {
var mark = todos[i];
mark.done = true;
console.log(mark);
spanClicked.setAttribute("class", "done");
var newKey = JSON.stringify(mark);
localStorage.setItem(key, newKey);
if(mark.done == false) {
spanClicked.setAttribute("class", "not done");
spanClicked.innerHTML = "not done";
}
}
}
}
它们都标有相同的 id,这是我跟踪每个项目的方式,但其中有两个。此外,当我刷新页面时,会显示两个列表项,其中一个标记为完成。我的问题是如何防止创建另一个项目,而是在 localStorage 中仅将一个项目标记为已完成?