jQuery开发任务平台保存操作导致任务重复克隆问题求助
错误根因定位
核心问题出在display函数的列表清空逻辑:$("#taskBoard")是jQuery封装的DOM对象,不支持原生innerHTML属性赋值,你写的$("#taskBoard").innerHTML = ""完全未生效,每次调用display渲染任务时,都会在已有任务的基础上再追加全量的任务列表,最终导致任务随保存次数不断重复累积。
另外代码中还存在一个潜在的DOM语法问题:模板里的<h2>${item.title}<h2>标签未闭合,缺少斜杠,可能引发后续DOM结构异常。
修复方案
直接修改display函数的清空逻辑,替换为jQuery支持的元素清空方法即可,修正后的完整代码如下:
$("#taskSave").click(() => { const task = { id: Date.now(), imageUrl: $("#imageInput").val(), title: $("#titleInput").val(), description: $("#descriptionInput").val(), type: $("#typeInput").val(), }; $("#overlay").hide(); todos.push(task); saveStorage(todos); // 重置输入框 $("#imageInput").val(""); $("#titleInput").val(""); $("#descriptionInput").val(""); $("#typeInput").val(""); }); function saveStorage(todos) { localStorage.setItem("todos", JSON.stringify(todos)); display(todos); }; function display(todos) { // 替换无效的innerHTML赋值,用jQuery内置的empty方法清空容器 $("#taskBoard").empty(); todos.forEach(item => { let c = document.createElement("div"); c.setAttribute("class", "card"); c.setAttribute('id', item.id); // 修复h2标签未闭合的问题 c.innerHTML = ` <div class="cardTop"> <div class="binContainer"> <div class="binImage"></div> </div> </div> <img src="${item.imageUrl}" alt="task image"> <h2>${item.title}</h2> <p>${item.description}</p> <div class="cardType">${item.type}</div> `; $("#taskBoard").append(c); }); };
内容的提问来源于stack exchange,提问作者adler
相关产品推荐
相关产品推荐

