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

如何为待办事项的编辑文本、复选框及删除状态添加localStorage支持

编辑文本本地存储逻辑修复

你之前将addToLocalStorage放在createTodoText返回前的写法无效,是因为调用时机错误:该位置只会在创建textarea元素时执行一次,而用户编辑完成点击外部触发blur事件时才是待办内容真实更新的时机,需要把存储调用放到blur回调中:

const createTodoText = (todo) => {
    const itemText = document.createElement('TEXTAREA');
    itemText.setAttribute('id', 'display-text');
    itemText.classList.add('todoText');
    itemText.addEventListener('input', function () {
        updateHeight(this);
    });
    itemText.value = todo.name;
    // 点击外部更新待办内容时同步到本地存储
    itemText.addEventListener('blur', (e) => {
        todo.name = e.currentTarget.value;
        addToLocalStorage(todos);
    });
    return itemText;
};

复选框、删除状态的本地存储同步

实现逻辑和编辑文本完全一致,只需在对应状态变更的逻辑后追加addToLocalStorage(todos)调用即可:

  • 复选框状态变更:给复选框绑定的change事件中,修改完todo.completed属性后,调用addToLocalStorage(todos)
  • 删除待办:给删除按钮绑定的click事件中,从todos数组移除对应待办项后,调用addToLocalStorage(todos)

可选优化

你当前的addToLocalStorage函数每次执行都会调用renderTodos重绘所有待办,如果频繁触发(比如连续点击多个复选框)可能会产生不必要的渲染开销。如果状态变更后你已经手动更新了对应DOM元素的状态,可以把renderTodos从addToLocalStorage中移除,仅在初始化读取本地存储时调用即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 23:09:02