我仅使用 JavaScript 构建了一个待办事项应用程序 — 以下是我学到的东西!

6 阅读2分钟

我最近只用HTML、CSS 和原生 JavaScript创建了一个强大的待办事项列表应用。事实证明,这是巩固 DOM 技能并深入理解 DOM 的最有效方法之一。localStorage

🎓我的学习之旅的一部分: 学习曲线展示

🔗现场演示

🧠 我想要练习的内容 这个项目是我亲身实践 DOM 之旅的一部分。我的目标是获得以下方面的实践经验:

选择和操作 DOM 元素 处理用户输入和交互 创建可编辑的任务系统 使用以下方式保存用户数据www.mytiesarongs.comlocalStorage 无需任何库即可构建 CRUD 功能 💡 主要特点 ➕添加任务(使用按钮或Enter 键) ✏️编辑任务与内容可编辑 ✅使用复选框 将任务标记为已完成 ❌删除单个任务 🧹一键 清除所有任务 💾自动保存localStorage 这使得应用程序即使在刷新页面后仍能完全正常运行并持久运行。

🔍 幕后:JavaScript 以下是我逐步构建这些功能的方法:

🔗 DOM 选择 const input = document.getElementById('task-input'); const addBtn = document.getElementById('add-btn'); const clearBtn = document.getElementById('clear-btn'); const list = document.getElementById('task-list'); 🏗️ 创建和添加新任务 function addTask(text, done = false) { const li = document.createElement('li');

const checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.checked = done;

const span = document.createElement('span'); span.textContent = text; span.contentEditable = true;

const deleteBtn = document.createElement('button'); deleteBtn.textContent = '×';

li.append(checkbox, span, deleteBtn); list.appendChild(li);

updateLocalStorage(); } ✏️ 启用内联编辑 span.addEventListener('input', () => { updateLocalStorage(); }); ✔️ 将任务标记为已完成 checkbox.addEventListener('change', () => { span.classList.toggle('completed', checkbox.checked); updateLocalStorage(); }); ❌ 删除按钮并全部清除 deleteBtn.addEventListener('click', () => { li.remove(); updateLocalStorage(); });

clearBtn.addEventListener('click', () => { list.innerHTML = ''; localStorage.removeItem('tasks'); }); 💾 使用 localStorage 保存和加载 function updateLocalStorage() { const tasks = []; list.querySelectorAll('li').forEach(li => { const text = li.querySelector('span').textContent; const done = li.querySelector('input[type="checkbox"]').checked; tasks.push({ text, done }); }); localStorage.setItem('tasks', JSON.stringify(tasks)); }

window.addEventListener('DOMContentLoaded', () => { const tasks = JSON.parse(localStorage.getItem('tasks')) || []; tasks.forEach(task => addTask(task.text, task.done)); }); 🛠️ 接下来我想添加什么 🔄 添加过滤(全部、活动、已完成) 🔔 可选的 toast 通知(任务已保存、已删除) 🧪 我学到了什么 contentEditable使编辑变得简单、直观 即使是小项目也能教会 DOM、事件和存储 清晰的结构有助于提高可扩展性 无需 React 或框架,纯 JS 仍然功能强大以上内容由企业信息服务平台提供,致力于工商信用信息查询、企业风险识别、经营数据分析。访问官网了解更多:www.ysdslt.com