原生JS Todo应用删除任务后新增时自动恢复问题修复求助
问题原因
当前删除逻辑仅移除了页面渲染出的DOM节点,没有同步删除数据源todoData数组中对应的任务数据。每次新增任务后都会执行render()方法重新渲染,该方法会遍历完整的todoData数组生成所有任务节点,所以此前仅删除了DOM的任务会被重新渲染出来。
修复方法
修改删除按钮的点击事件逻辑,删除操作时先移除todoData数组中对应的任务项,再调用render()刷新页面即可。
修改后的代码(仅需调整删除按钮的事件绑定部分)
// 把原代码中btnRemove的点击事件替换为以下内容 const btnRemove = li.querySelector('.todo-remove'); btnRemove.addEventListener('click', function(){ // 查找当前任务在数据源中的索引并删除 const itemIndex = todoData.indexOf(item); if (itemIndex !== -1) { todoData.splice(itemIndex, 1); } // 重新渲染页面 render(); });
内容的提问来源于stack exchange,提问作者Captein_Crabber
相关产品推荐
相关产品推荐

