点击移除按钮删除对应循环生成的输入框及按钮功能失效求解
问题修复说明
你代码中存在以下几处需要修改的错误:
- 新增按钮的变量名、父容器引用错误
创建新增按钮时你定义的按钮变量为addierenButton、父容器变量为myParent2,但追加元素时变量名写错,导致新增按钮根本没有被正常插入到DOM中,删除时自然找不到对应元素。
原错误行:
修改为:myParent.appendChild(addButton);myParent2.appendChild(addierenButton); - 自定义删除函数名和原生方法冲突
你命名的remove函数和DOM元素自带的原生remove()方法重名,调用时会出现上下文冲突导致功能异常。- 先修改移除按钮的点击事件绑定:
removeButton.setAttribute('onclick','removeGroup(this)');- 再修改对应函数的定义,同时可以加可选链操作符避免元素不存在时的报错:
function removeGroup(btn){ const num = btn.id.replace("remove_btn_", ""); const delInput= document.getElementById("InputNew-" + num); const delAdd= document.getElementById("add_btn_" + num); const delRemove= document.getElementById("remove_btn_" + num); delInput?.remove(); delAdd?.remove(); delRemove?.remove(); } - (可选优化)循环变量改用块级作用域声明
把循环开头的var i改为let i,避免var的函数作用域带来的闭包变量共享问题,降低后续功能扩展的隐患:for(let i = 0; i < arrayinput.length; i++){ // 原有循环逻辑 }
内容的提问来源于stack exchange,提问作者Jan P
相关产品推荐
相关产品推荐

