原生 JavaScript 实现 TodoMVC:核心功能与问题总结
一、项目简介本项目使用原生HTML、CSS 和 JavaScript实现一个 TodoMVC 待办事项应用实现了任务添加、完成、删除、全选、筛选以及数据保存等功能。项目主要通过todos数组保存任务数据再通过render()函数将数据显示到页面中。二、核心功能1. 任务数据使用数组保存任务let todos [];每个任务包含任务名称和完成状态{ title: 学习 JavaScript, completed: false }其中completed用来判断任务是否完成。2. render() 页面渲染render()是自己定义的函数主要作用是根据todos中的数据重新生成任务列表。当添加、删除或修改任务后调用render();页面就会根据最新数据进行更新。3. 数组常用方法项目中使用了几个非常重要的数组方法todos.forEach(...)用于遍历所有任务。todos.filter(...)用于筛选任务例如统计未完成任务。todos.some(...)用于判断是否存在已经完成的任务。三、localStorage 解决刷新数据丢失如果只把任务保存到let todos [];刷新页面后数据会重新初始化因此需要使用localStorage保存数据。保存时localStorage.setItem( todos, JSON.stringify(todos));刷新页面后再读取todos JSON.parse( localStorage.getItem(todos));读取数据后还需要执行render();否则虽然数据已经恢复但是页面不会自动显示任务。因此整个过程是保存数据 → localStorage 读取数据 → todos 显示数据 → render()四、All、Active、Completed 筛选底部的All Active Completed通过 URL 的hash判断当前筛选状态。例如#active使用this.hash.substring(1);可以得到active然后修改filter再调用render();根据不同条件显示对应任务。同时使用classList.add(selected); classList.remove(selected);控制当前筛选按钮的 CSS 样式。五、底部任务数量使用todos.filter(todo !todo.completed).length;可以计算未完成任务数量。例如2 items left其中textContent可以修改页面中的文字。项目还使用count.nextSibling获取数字后面的文本节点从而实现1 item left 2 items left的区别。六、下箭头显示控制输入框左侧的下箭头需要根据任务数量显示。没有任务时toggle.style.display none;有任务时toggle.style.display block;因此可以根据todos.length判断是否显示。七、项目中遇到的问题在实现过程中主要遇到了三个问题问题一刷新后任务消失原因是没有使用localStorage保存数据。问题二刷新后数据存在但任务列表不显示原因是数据虽然从localStorage中恢复了但没有立即调用render();问题三CSS 样式没有生效主要检查HTML 中的class是否正确CSS 选择器是否正确HTML 嵌套结构是否符合选择器是否存在优先级更高的 CSS。八、总结通过 TodoMVC 项目我掌握了原生 JavaScript 中比较重要的 DOM 和数组操作方法。整个项目的核心逻辑可以概括为用户操作 ↓ 修改 todos ↓ localStorage 保存数据 ↓ render() ↓ 更新页面其中todos保存任务数据localStorage实现刷新后数据保存render()根据数据更新页面filter()筛选任务forEach()遍历任务some()判断是否存在完成任务classList控制 CSS 样式querySelector()获取 DOM 元素通过这个项目可以进一步理解JavaScript 如何操作 DOM以及数据变化后如何同步更新页面。

相关新闻

从Prompt到Agent:Tool、Context、Memory协同演进实战

从Prompt到Agent:Tool、Context、Memory协同演进实战

1. 从 Prompt 到 Agent:一次认知升级的起点1.1 为什么单靠 Prompt 撑不起一个真正的 Agent2023 年那会儿,我身边几乎所有做 AI 应用的朋友都在卷 Prompt。大家比谁写的提示词更长、更细、更“咒语化”,仿佛只要把提示词打磨到极致&#xff0c…

2026/10/4 8:54:58 阅读更多 →
插件机制全解析:从加载失败排查到插件开发实战

插件机制全解析:从加载失败排查到插件开发实战

最近在好几个技术社区里刷到同一个词:plugins。而且问题五花八门,有人问"IAR的插件到底是干什么的",有人贴着报错问"failed to load plugins web boot 到底怎么解决",还有人讨论 MusicFree 的插件应该怎么写。…

2026/10/4 8:53:58 阅读更多 →
udx大带宽大延迟网络与xquic bbr, tcp bbr实测比较

udx大带宽大延迟网络与xquic bbr, tcp bbr实测比较

quic在其白皮书中声称可以在大延迟大带宽网络中表现良好,为此我对比过目前xq,lsq,pq,tq几种实现,因为这些都是开源项目通过不断的折腾,向这方面研究的同学索取不同版本的实现进行实际测试。 经过,对不同国家的主机,到国…

2026/10/5 13:08:43 阅读更多 →

最新新闻

【北京会议 | 北京航空航天大学主办】第二届先进材料与航空航天结构力学国际学术会议(AMASM 2026)

【北京会议 | 北京航空航天大学主办】第二届先进材料与航空航天结构力学国际学术会议(AMASM 2026)

第二届先进材料与航空航天结构力学国际学术会议(AMASM 2026) 2026 2nd International Conference on Advanced Materials and Aerospace Structural Mechanics 2026年11月20-11月22日 | 中国北京 大会官网:www.ic-amasm.org 截稿时间&…

2026/10/5 13:12:01 阅读更多 →
无人机多机编队中多 AP 组网详解与频段规划注意事项

无人机多机编队中多 AP 组网详解与频段规划注意事项

目录 一、为什么多机要按 SSID 分组接入 AP 二、频段与信令机制基础 三、多 AP 漫游 / 中继 / 网桥三种机制辨析 四、802.11k / v / r 与无缝漫游的工程约束 五、多 AP 接力链路的设计方案与容量预算 六、飞机恢复默认状态的处置与预防 七、频段规划:法定频段与合规 八、飞行前…

2026/10/5 13:12:01 阅读更多 →
「Python 翻车日记 · 第 19 篇」日志打了两遍,断点默默消失?——调试工具链的三个默认陷阱

「Python 翻车日记 · 第 19 篇」日志打了两遍,断点默默消失?——调试工具链的三个默认陷阱

Python 翻车日记 第 19 篇:日志打了两遍,断点默默消失?——调试工具链的三个默认陷阱 📋 本期菜单:6 个测试与调试的坑,从「logger 传播」到「doctest 空格敏感」 [入门] logger 重复输出 print 缓冲丢失 doctest 空格敏感 [进阶] mock.patch 参数反序 assertRaises…

2026/10/5 13:12:01 阅读更多 →
基于大数据技术的传统古建筑文化数据可视化分析与系统机器学习实战python数据分析与可视化

基于大数据技术的传统古建筑文化数据可视化分析与系统机器学习实战python数据分析与可视化

✅源码获取: 🍅--------------------【点击左上方头像,在置顶文章上方的wx】联系我们-----------------🍅 ✌网站介绍:✌10年项目辅导经验、专注于计算机技术领域学生项目实战辅导。 ✌服务范围:大数据、机…

2026/10/5 13:12:01 阅读更多 →
肠道菌群与睡眠质量:你的失眠多梦,可能是肠道在紊乱

肠道菌群与睡眠质量:你的失眠多梦,可能是肠道在紊乱

肠道菌群与睡眠质量:你的失眠多梦,可能是肠道在紊乱大多数人习惯性认为,失眠、多梦、浅眠、睡不踏实,只和压力、情绪、神经状态相关。但越来越多的微生态研究表明:肠道菌群的平衡状态,会深度影响人体睡眠节…

2026/10/5 13:12:01 阅读更多 →
第四篇:SSRF 结合 Gopher 协议攻击内网 Redis|内网穿透渗透思路解析

第四篇:SSRF 结合 Gopher 协议攻击内网 Redis|内网穿透渗透思路解析

摘要:即使 Redis 部署在内网,也可借助 SSRF 漏洞 Gopher 协议作为跳板攻击内网 Redis。本文讲解 Gopher 协议攻击原理、payload 构造方式,同时给出对应的防御手段,破除 “内网服务无需安全防护” 的误区。前言很多网站存在 SSRF …

2026/10/5 13:11:01 阅读更多 →

日新闻

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 0:00:22 阅读更多 →
AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

1. 从“plugins”这个词说起:它到底在解决什么问题如果你最近在折腾 AI 编程工具,尤其是 Cursor、Codex CLI、Claude Code 这类带 CLI 的编辑器或命令行助手,那你大概率绕不开一个词——plugins。这个词本身不新鲜,从浏览器到 IDE…

2026/10/5 0:00:23 阅读更多 →
第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 0:00:23 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 5:06:42 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 1:10:22 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 3:06:17 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 11:40:45 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 20:14:29 阅读更多 →