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

JavaScript待办列表无法删除最后一个li及清空按钮失效问题求助

问题修复方案

你遇到的两个问题均源于showTask函数的逻辑错误:你将DOM更新操作放在了forEach循环内部,当待办数组listArr为空时,forEach不会执行,页面DOM就永远不会被清空,始终保留着之前渲染的内容。

修正方案

将showTask函数中拼接DOM字符串和更新页面的逻辑调整如下:

//add task
function showTask() {
    let getLocalStorage = localStorage.getItem("New Todo")
    if (getLocalStorage == null) {
        listArr = [];
    } else {
        listArr = JSON.parse(getLocalStorage);
    }
    const pendingNumb = document.querySelector('.pending');
    pendingNumb.textContent= listArr.length;
    let newLiTag = '';
    listArr.forEach((element, index) => {
        newLiTag += `<li> ${element} <span onclick="deleteTask(${index})";><i class="fas fa-trash-alt"></i></span></li>`;
    });
    // 把DOM更新、清空输入框的逻辑移到循环外,数组为空时也会执行
    todo.innerHTML = newLiTag;
    inputBox.value = '';
}

调整后逻辑执行顺序变为:先拼接所有待办的li字符串,再统一更新到页面,哪怕待办数组为空,也会把列表区域的内容设置为空字符串,完美解决最后一个待办删不掉、清空所有后页面还残留li的问题,残留li无法删除的连带问题也会同步解决。

内容的提问来源于stack exchange,提问作者Gad Ashell

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:54:03