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

待办事项列表localStorage持久化:getTasks函数无法触发问题求助

解决你的待办事项列表持久化与getTasks()不执行问题

看起来你遇到的核心问题是getTasks()函数完全没被调用,连测试用的console.log('bonjour')都没输出,咱们一步步排查解决:

1. 核心问题:遗漏了DOMContentLoaded事件绑定代码

从你提供的JavaScript代码来看,只定义了getTasks()函数,但没有添加触发它的事件监听代码!你提到计划配置document.addEventListener('DOMContentLoaded', getTasks),但这段代码没出现在你的JS文件里——这就是函数没执行的直接原因。

2. 补充关键代码并修复依赖问题

除了事件绑定,你的getTasks()里用到了list.innerHTML,但没有定义list变量(用来获取页面上的待办列表容器),这会导致后续渲染代码报错。把以下代码加到你的app.js中:

// 先获取页面上的待办列表容器
const list = document.querySelector('.todos');

// 绑定页面加载事件,触发getTasks
document.addEventListener('DOMContentLoaded', getTasks);

function getTasks() {
    console.log('bonjour')
    let tasks;
    if(localStorage.getItem('tasks') === null) {
        tasks = [];
    } else {
        tasks = JSON.parse(localStorage.getItem('tasks'));
    }
    // 先清空现有列表,避免重复渲染
    list.innerHTML = '';
    tasks.forEach(task => {
        const html = `
        <li>
            <span>${task}</span>
            <i class="far fa-trash-alt delete"></i>
        </li>`
        list.innerHTML += html;
        console.log('hi')
    });
}

3. 额外完善:补充完整的增删功能(可选)

为了让你的待办列表功能闭环,这里补充添加和删除任务的逻辑,确保持久化完全生效:

// 获取添加任务的表单和输入框
const addForm = document.querySelector('.add');
const taskInput = document.getElementById('name');

// 添加任务到localStorage并渲染
function addTask(e) {
    e.preventDefault();
    const taskContent = taskInput.value.trim();
    if (!taskContent) return;

    let tasks = localStorage.getItem('tasks') ? JSON.parse(localStorage.getItem('tasks')) : [];
    tasks.push(taskContent);
    localStorage.setItem('tasks', JSON.stringify(tasks));
    getTasks(); // 重新渲染列表
    taskInput.value = ''; // 清空输入框
}

// 删除任务
function deleteTask(e) {
    if (e.target.classList.contains('delete')) {
        const taskText = e.target.previousElementSibling.textContent;
        let tasks = JSON.parse(localStorage.getItem('tasks'));
        tasks = tasks.filter(task => task !== taskText);
        localStorage.setItem('tasks', JSON.stringify(tasks));
        e.target.parentElement.remove(); // 移除页面上的任务元素
    }
}

// 绑定增删事件
addForm.addEventListener('submit', addTask);
list.addEventListener('click', deleteTask);

现在刷新页面,你应该能在控制台看到bonjour的输出,localStorage里的任务也会正确渲染到页面上,刷新后数据也不会丢失了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 03:39:07