当前位置: 首页 > news >正文

JavaScript实战:制作一个待办事项列表应用


JavaScript实战:制作一个待办事项列表应用

引言

在本教程中,我们将一步步创建一个简单的待办事项列表应用,这不仅会帮助你学习基本的JavaScript编程概念,还会教会你如何处理事件以及操作DOM。这个项目是面向初学者的,旨在提供实际操作的经验。
在这里插入图片描述

知识准备

  • HTML基础:了解如何编写基础的HTML结构。
  • CSS基础:理解如何使用CSS进行样式设置。
  • JavaScript基础:熟悉变量、函数、数组和对象的概念。

第一步:创建应用的HTML结构

首先,我们需要创建一个简单的HTML页面,它将作为我们待办事项列表的骨架。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>待办事项列表应用</title><!-- 可以在这里添加CSS或链接外部样式表 -->
</head>
<body><div id="app"><h1>我的待办事项</h1><form id="todo-form"><input type="text" id="todo-input" placeholder="添加新的待办事项..."><button type="submit">添加</button></form><ul id="todo-list"><!-- 待办事项将在这里动态插入 --></ul></div><!-- 在此处链接外部JavaScript文件 -->
</body>
</html>

第二步:添加样式

我们的应用可能会很基础,但添加一些简单的样式可以让它看起来更好。

/* 在此添加基础样式 */
body {font-family: 'Arial', sans-serif;background: #f4f4f4;color: #333;line-height: 1.6;
}#app {width: 300px;margin: 30px auto;
}#todo-form input[type="text"] {width: 70%;padding: 10px;
}#todo-form button {width: 25%;background: #333;color: white;padding: 10px;border: none;
}#todo-list {list-style: none;padding: 0;
}#todo-list li {background: #fff;margin-bottom: 5px;padding: 10px;text-align: left;
}

第三步:编写JavaScript逻辑

现在,我们将使用JavaScript为我们的应用添加交互性。

3.1 获取元素引用

// 获取DOM元素的引用
const todoForm = document.getElementById('todo-form');
const todoInput = document.getElementById('todo-input');
const todoList = document.getElementById('todo-list');

3.2 添加事件监听器

// 处理表单提交事件
todoForm.addEventListener('submit', function(event) {event.preventDefault(); // 阻止表单默认提交行为// 获取用户输入的待办事项const newTodoText = todoInput.value.trim();// 检查输入不为空if (newTodoText !== '') {addTodoItem(newTodoText);todoInput.value = ''; // 清空输入框}
});

3.3 添加新的待办事项

function addTodoItem(text) {// 创建新的li元素const li = document.createElement('li');li.textContent = text;// 添加删除按钮const deleteBtn = document.createElement('button');deleteBtn.textContent = '删除';deleteBtn.onclick = function() {li.remove();};li.appendChild(deleteBtn);// 将新的待办事项添加到列表中todoList.appendChild(li);
}

第四步:本地存储和加载待办事项

为了保证用户在关闭浏览器后再次访问应用时能够看到之前的待办事项,我们可以使用浏览器的LocalStorage功能。

4.1 在添加新待办事项时存储数据

function addTodoItem(text) {// ...之前的代码// 存储待办事项到LocalStoragesaveTodos();
}

4.2 存储和加载函数

function saveTodos() {const todos = [];document.querySelectorAll('#todo-list li').forEach(function(item) {todos.push(item.textContent.replace('删除', '').trim());});localStorage.setItem('todos', JSON.stringify(todos));
}function loadTodos() {const todos = JSON.parse(localStorage.getItem('todos')) || [];todos.forEach(addTodoItem);
}// 页面加载时调用loadTodos
document.addEventListener('DOMContentLoaded', loadTodos);

以上是文章的大纲和部分内容,整篇文章可以根据这个基础继续扩展,深入解释每个概念,添加代码注释,增加更多的功能,如编辑待办事项、排序或筛选功能。您可以通过增加更多的例子,提示,最佳实践和相关资源,来帮助读者更好地理解并实践。不要忘了在文章的末尾添加总结部分,回顾已经学到的知识,并鼓励读者继续学习和探索JavaScript的更多功能。

相关文章:

JavaScript实战:制作一个待办事项列表应用

JavaScript实战&#xff1a;制作一个待办事项列表应用 引言 在本教程中&#xff0c;我们将一步步创建一个简单的待办事项列表应用&#xff0c;这不仅会帮助你学习基本的JavaScript编程概念&#xff0c;还会教会你如何处理事件以及操作DOM。这个项目是面向初学者的&#xff0c…...

4面百度软件测试工程师的面试经验总结

没有绝对的天才&#xff0c;只有持续不断的付出。对于我们每一个平凡人来说&#xff0c;改变命运只能依靠努力幸运&#xff0c;但如果你不够幸运&#xff0c;那就只能拉高努力的占比。 2023年7月&#xff0c;我有幸成为了百度的一名测试工程师&#xff0c;从外包辞职了历经1000…...

textarea文本框回车enter的时候自动提交表单,根据内容自动高度

切图网近期一个bootstrap5仿chatgpt页面的项目遇到的&#xff0c;textarea文本框回车enter的时候自动提交表单&#xff0c;根据内容自动高度&#xff0c;代码如下&#xff0c;亲测可用。 <textarea placeholder"Message ChatGPT…" name"" rows"&q…...

dubbo框架技术文档-《spring-boot整合dubbo框架搭建+配置文件》框架的本地基础搭建

阿丹&#xff1a; 目前流行的微服务更多的就是dubbo和springcould微服务。之前阿丹没有出过dubbo相关的文章&#xff0c;因为之前接触springcould的微服务概念比较多一点&#xff0c;但是相对于springcould来说&#xff0c;springcould服务之间的调用是大多是使用了nacos&#…...

中通快递单号查询入口,将指定某天签收的单号筛选出来

批量查询中通快递单号的物流信息&#xff0c;将指定某天签收的单号筛选出来。 所需工具&#xff1a; 一个【快递批量查询高手】软件 中通快递单号若干 操作步骤&#xff1a; 步骤1&#xff1a;运行【快递批量查询高手】软件&#xff0c;并登录 步骤2&#xff1a;点击主界面左…...

MySQL-含json字段表和与不含json字段表查询性能对比

含json字段表和与不含json字段表查询性能对比 说明: EP_USER_PICTURE_INFO_2:不含json字段表 20200729json_test:含有json字段表 其中20200729json_test 标准ID、MANAGER_NO、PHONE_NO 为非json字段 data为json字段 2个表中MANAGER_NO、PHONE_NO都创建了各自的索引 测试…...

如何用Docker快速搭建本地开发环境

&#x1f4e2; 声明&#xff1a; &#x1f344; 大家好&#xff0c;我是风筝 &#x1f30d; 作者主页&#xff1a;【古时的风筝CSDN主页】。 ⚠️ 本文目的为个人学习记录及知识分享。如果有什么不正确、不严谨的地方请及时指正&#xff0c;不胜感激。 直达博主&#xff1a;「…...

SpringDataJPA基础

简介 Spring Data为数据访问层提供了熟悉且一致的Spring编程模版&#xff0c;对于每种持久性存储&#xff0c;业务代码通常需要提供不同存储库提供对不同CURD持久化操作。Spring Data为这些持久性存储以及特定实现提供了通用的接口和模版。其目的是统一简化对不同类型持久性存储…...

程序员如何成为自由的独立开发者?

你是不是那个整天坐在电脑前敲代码的程序员朋友&#xff1f;作为程序员&#xff0c;你是否也曾思考过如何成为一名独立开发者&#xff1f;思考过究竟如何踏上这段充满挑战和创造的旅程&#xff1f; 现在这个数码时代&#xff0c;技术不断演进&#xff0c;越来越多的程序员朋友…...

Ant Design Vue(v1.7.8)a-table组件的插槽功能

本案例中&#xff0c;编写了一个名为stockAdd的vue&#xff08;v2.5.17&#xff09;自定义组件&#xff0c;使用a-table组件的插槽功能&#xff0c;创建了一个可编辑的数据表格&#xff1a; 表格用于添加采购的物品&#xff0c;点“新增物品”按键&#xff0c;表格添加一行&…...

笔记69:Conv1d 和 Conv2d 之间的区别

笔记地址&#xff1a;D:\work_file\&#xff08;4&#xff09;DeepLearning_Learning\03_个人笔记\4. Transformer 网络变体 a a a a a a a a a a a...

关于马达保护器 的选型 你知道吗

一、智能马达保护器的介绍 在有色冶炼中&#xff0c;根据工艺需求和客户需求&#xff0c;智能电动机保护器的主要应用模式有保护模式、端子控制模式、全通信模式和半通信模式。 4.1保护模式 在保护模式下&#xff0c;智能电动机保护器只利用其自身的保护功能和测量功能&#…...

springboot(ssm高校竞赛管理系统 在线竞赛平台 Java系统

springboot(ssm高校竞赛管理系统 在线竞赛平台 Java系统 开发语言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5.7&#xff08;或8.0&#xff09; 数…...

SDXL使用animateDiff和hotshot-xl进行文生视频

截至2023.12.8号&#xff0c;目前市面上有两款适用于SDXL的文生视频开源工具&#xff0c;分别是AnimateDiff和hotshot-xl。 一、工具下载链接 &#xff08;1&#xff09;AnimateDiff的webui版本的git链接&#xff1a; GitHub - continue-revolution/sd-webui-animatediff: A…...

【高数:3 无穷小与无穷大】

【高数&#xff1a;3 无穷小与无穷大】 1 无穷小与无穷大2 极限运算法则3 极限存在原则4 趋于无穷小的比较 参考书籍&#xff1a;毕文斌, 毛悦悦. Python漫游数学王国[M]. 北京&#xff1a;清华大学出版社&#xff0c;2022. 1 无穷小与无穷大 无穷大在sympy中用两个字母o表示无…...

C语言预读取技术 __builtin_prefetch

__builtin_prefetch 是一个编译器内置函数&#xff0c;用于在编译时向编译器发出指令&#xff0c;要求在执行期间预取内存数据。它通常用于提高程序的性能&#xff0c;特别是对于那些需要频繁访问内存的情况。 __builtin_prefetch 函数的语法如下&#xff1a;c __builtin_prefe…...

自动驾驶学习笔记(十三)——感知基础

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo Beta宣讲和线下沙龙》免费报名—>传送门 文章目录 前言 传感器 测距原理 坐标系 标定 同…...

WLAN配置实验

本文记录了WLAN配置实践的过程&#xff0c;该操作在华为HCIA中属于相对较复杂的实验&#xff0c;记录过程备忘。这里不就WLAN原理解释&#xff0c;仅进行配置实践&#xff0c;可以作为学习原理时候的参考。本文使用华为ENSP进行仿真。实验拓扑图如下&#xff1a; 1.WLAN工作流程…...

java_web接收前端传的excel文件读取数据

#本次做一个将患者数据导入到某个模块的功能&#xff0c;前期集成的代码时不时出现异常&#xff0c;本次进行修改记录 //controller层/*** 导入患者数据*/RejectReplayRequestPostMapping("/importData")public Result<?> importData(HttpServletRequest req…...

在Vue开发中v-if指令和v-show指令的使用介绍和区别及使用场景

一、条件渲染 v-if v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回真值时才被渲染。 <h1 v-if"awesome">Vue is awesome!</h1>v-else 你也可以使用 v-else 为 v-if 添加一个“else 区块”。 <h1 v-if"awesome"&g…...

ISTA 2A-2011 (2022) 全解析|≤68kg 单个包装件部分模拟运输测试标准

前言ISTA 2A-2011 (2022) 属于 ISTA 2 系列部分模拟性能测试&#xff0c;专门针对重量不大于 68kg&#xff08;150lb&#xff09;的单个运输包装件设计&#xff0c;是中小型产品包装最常用的入门级运输验证标准。该标准通过温湿度、堆码压力、振动、冲击等测试模块&#xff0c;…...

10分钟搭建个人游戏云:Sunshine开源游戏串流服务器完全指南

10分钟搭建个人游戏云&#xff1a;Sunshine开源游戏串流服务器完全指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 你是否梦想过在任何设备上畅玩PC游戏&#xff1f;想要在客厅…...

单北斗GNSS变形监测系统在地质灾害监测中的应用与维护

北斗 GNSS 变形监测系统在地质灾害监测中发挥着重要作用。它通过高精度定位&#xff0c;实时捕捉地面形变&#xff0c;为防灾减灾提供精准数据支持。系统的定制化设计能适应不同环境&#xff0c;同时具备稳定性与可靠性。随着技术发展&#xff0c;监测和维护也变得更高效。这种…...

git reset 怎么用?2026年最完整操作指南,撤销提交不再手足无措

代码提交了才发现写错了&#xff0c;或者本地 commit 堆了一堆想整理——你是直接新建一个"撤回"commit&#xff0c;还是对着搜索结果一脸茫然不敢乱动&#xff1f; 如果你还没搞清楚 git reset 的三种模式&#xff0c;随时可能把代码撤没了。学完本文&#xff0c;你…...

如何在Windows上实现高效屏幕标注:gInk免费工具完全指南

如何在Windows上实现高效屏幕标注&#xff1a;gInk免费工具完全指南 【免费下载链接】gInk An easy to use on-screen annotation software inspired by Epic Pen. 项目地址: https://gitcode.com/gh_mirrors/gi/gInk 你是否需要在演示时快速圈出重点&#xff0c;或在线…...

别再裸发ROS图像了!image_transport保姆级教程:从压缩传输到参数调优,一次搞定

别再裸发ROS图像了&#xff01;image_transport保姆级教程&#xff1a;从压缩传输到参数调优&#xff0c;一次搞定 在机器人视觉开发中&#xff0c;图像传输往往是性能瓶颈的关键所在。许多开发者习惯性地使用ros::Publisher/Subscriber直接处理图像数据&#xff0c;却不知这种…...

5分钟快速上手!免费开源字幕编辑器Subtitle Edit终极使用指南

5分钟快速上手&#xff01;免费开源字幕编辑器Subtitle Edit终极使用指南 【免费下载链接】subtitleedit the subtitle editor :) 项目地址: https://gitcode.com/gh_mirrors/su/subtitleedit 你是否正在寻找一款功能强大且完全免费的字幕编辑软件&#xff1f;Subtitle …...

星露谷物语SMAPI模组加载器:终极安装与使用完整指南

星露谷物语SMAPI模组加载器&#xff1a;终极安装与使用完整指南 【免费下载链接】SMAPI The modding API for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/smap/SMAPI 你是否想在星露谷物语中体验数百个模组带来的无限可能&#xff0c;却又担心安装复杂和…...

Copula导向的互相关随机场模拟及土坡可靠度分析【附仿真】

✨ 长期致力于土坡可靠度、信息扩散、Copula函数、互相关随机场、HMC-SS法研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;二元信息扩散分布Copula模型…...

在Windows通知栏悄悄学习:ToastFish让你的碎片时间变成单词记忆神器

在Windows通知栏悄悄学习&#xff1a;ToastFish让你的碎片时间变成单词记忆神器 【免费下载链接】ToastFish 一个利用摸鱼时间背单词的软件。 项目地址: https://gitcode.com/GitHub_Trending/to/ToastFish 想象一下这样的场景&#xff1a;你正在办公室里忙碌地处理文件…...