Web ページに li 要素を追加するアプリケーションがあります。Webページで「完了」とマークするときに、ローカルストレージ内で要素のクラス名を「完了」に変更する必要があります。(done: true と表示されます)。現在のコードでは、意図せずローカル ストレージに 2 つの項目を作成しています。ここに私のコードを示します:
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 でラベル付けされているため、各アイテムを追跡していますが、そのうちの 2 つがあります。また、ページを更新すると、2 つのリスト項目が表示されます。1 つは完了とマークされています。私の質問は、別のアイテムが作成されるのを防ぎ、代わりに1つのアイテムだけをlocalStorageで完了としてマークするにはどうすればよいですか?