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的更多功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/257357.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Zookeeper单机模式搭建

1、下载 ​wget https://dlcdn.apache.org/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz 2、解压 tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz 3、进入 apache-zookeeper-3.6.3-bin目录下&#xff0c;创建data cd apache-zookeeper-3.6.3-bin mkdir da…

makefile中选项说明

-C gcc的-c选项表示只编译不链接。不带-c选项则默认既编译又链接。 CFLAGS编译参数 LDFLAGS链接参数 指定LIBS是要链接的库的目录。LDFLAGS告诉链接器从哪里寻找库文件。 LDFLAGS指定-L虽然能让链接器找到库进行链接&#xff0c;但是运行时链接器却找不到这个库&#xff0c;…

Docker安装postgres最新版

1. postgres数据库 PostgreSQL是一种开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它是一种高度可扩展的、可靠的、功能丰富的数据库系统。以下是关于PostgreSQL的一些介绍&#xff1a; 开源性&#xff1a;PostgreSQL是一个开源项目&#xff0c;可以…

嵌入式系统

嵌入式系统 目前国内一个普遍认同的嵌入式系统定义是&#xff1a;以应用为中心、以计算机技术为基础&#xff0c;软件硬件可裁剪&#xff0c;适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。&#xff08;引用自《嵌入式系统设计师教程》&#xff09; …

MangoDB数据可updata报错

报错详情 报错原因 语法错误&#xff0c;我们调整语法即可 update&#xff08;{要修改的行}&#xff0c;{$set{要修改的字段}}&#xff09;

【Java基础系列】Cron表达式入门

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

<IBM Websphere Portal>《关于IBM的Portal和WAS的说明和总结(自用笔记)》

《关于IBM的Portal和WAS的简单总结》 1 架构1.1 说明 2 常见问题2.1 LDAP链接问题2.2 启动脚本建议2.3 日志大小保留建议2.4 启动垃圾回收日志 3 日志位置 1 架构 应用服务部署架构如上&#xff1a; &#x1f449;192.168.66.1服务器运行的server进程有&#xff1a;dmgr、nodea…

有了安卓模拟器,就能在Windows 10或11上像使用安卓操作系统一样使用安卓

你可以使用Android模拟器在Windows 11或Windows 10中运行Android应用程序。如果你喜欢的应用程序只在手机上运行,但你想在电脑上使用,这些模拟器会很有用。 BlueStacks 与整个操作系统模拟器不同,BlueStacks只在Windows上模拟Android应用程序。它真的很容易使用,所以你不需…

Linux操作系统 3.Linux用户和权限

一、认知root用户&#xff08;超级管理员&#xff09; Windows、MacOS、Linux均采用多用户的管理模式进行权限管理 在Linux系统中&#xff0c;拥有最大权限的账户名为&#xff1a;root&#xff08;超级管理员&#xff09; 之前我们一直使用的是普通的用户 root用户拥有最大的系…

Spring Boot 3 整合 Spring Cache 与 Redis 缓存实战

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

06_W5500_DHCP

1.DHCP协议介绍&#xff1a; DHCP&#xff08;Dynamic Host Configuration Protocol&#xff09;是一种用于自动分配IP地址和其他网络配置信息的协议。它允许网络中的设备&#xff08;如计算机、手机、打印机等&#xff09;在连接到网络时自动获取IP地址、子网掩码、默认网关、…

【技巧】RAR压缩文件如何解压?

RAR是一种文件压缩与归档的专利文件格式&#xff0c;很多时候在工作中都会使用到。既然是压缩格式&#xff0c;我们就需要解压才能得到里面的文件&#xff0c;对于电脑小白来说&#xff0c;可能不知道如何解压RAR文件&#xff0c;下面小编来分享一下。 解压压缩文件&#xff0…