You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 22:54:01