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

JS如何向指定div添加元素,新增元素删除功能失效如何解决

问题根因

你把删除按钮嵌套进新增的monday_input div后,按钮的父节点层级发生了变化,原有删除逻辑里只找一层父节点的写法无法定位到要删除的根元素.subcategory,就会出现删不掉的问题。同时你原有删除逻辑中回减monday_id_count的操作存在隐患,会导致后续新增的textarea出现name重复的问题。


可行解决方案

调整动态生成的DOM结构,同时优化删除逻辑用closest()方法精准定位目标元素,不受嵌套层级影响,不需要提前在父级HTML中预创建div。

修改后完整JS代码

// 全局变量记得提前初始化
let monday_sub_count = 0;
let monday_id_count = 0;

// 添加功能
function add_monday() {
    if (monday_sub_count < 5) {
        monday_sub_count++;
        const mon = document.createElement('div');
        mon.className = 'subcategory';
        // 动态生成monday_input div包裹删除按钮
        mon.innerHTML = `<textarea name="monday${monday_id_count}" placeholder="Type anything you want here" class="subcategory_text"></textarea>
        <div class="monday_input">
            <input type="button" class="remove_button" value="-" onclick="removeMon(this)" />
        </div>`;
        monday_id_count++;
        document.getElementById('mon').appendChild(mon);
    }
}

// 删除功能
function removeMon(btn) {
    // 直接匹配最近的.subcategory祖先元素,不管中间嵌套了多少层div都能精准定位
    const targetItem = btn.closest('.subcategory');
    if(targetItem) {
        targetItem.remove();
        monday_sub_count--;
        // 不要回减monday_id_count,避免后续生成的textarea name属性重复
    }
}

内容的提问来源于stack exchange,提问作者Turbo Asker

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:36:04