0

0

使用 JavaScript 类构建一个简单的待办事项列表

DDD

DDD

发布时间:2025-07-16 16:32:12

|

881人浏览过

|

来源于php中文网

原创

使用 javascript 类构建一个简单的待办事项列表

本文将引导你使用 JavaScript 类构建一个简单的待办事项列表。我们将创建两个类:List 用于管理任务列表,Render 用于处理用户界面交互和渲染。通过学习本文,你将掌握如何使用面向对象编程的思想来组织和管理前端代码,并了解如何处理用户输入和动态更新页面内容。

待办事项列表的实现

以下是如何使用 JavaScript 类实现待办事项列表的详细步骤和代码示例。

1. HTML 结构

首先,我们需要一个 HTML 结构来容纳我们的待办事项列表。创建一个包含输入框、添加按钮和用于显示任务列表的

    元素的
    容器。
    
    
    
        
        
        To-Do List
        
    
    
        

      2. List 类

      List 类负责管理待办事项列表。它包含一个 toDo 数组来存储任务,以及 addTask 和 removeTask 方法来添加和删除任务。

      立即学习Java免费学习笔记(深入)”;

      // List.js
      class List {
          toDo = [];
          constructor(render) {
              this.render = render;
              this.render.renderList(this.toDo);
          }
      
          addTask(task) {
              this.toDo.push(task);
              this.render.renderList(this.toDo);
          }
      
          removeTask(task) {
              this.toDo = this.toDo.filter((word) => word !== task);
              this.render.renderList(this.toDo);
          }
      }

      代码解释:

      精美淘宝客单页面 zblog模板
      精美淘宝客单页面 zblog模板

      采用zblog修改的模板,简单方便,直接解压上传到空间即可使用,页面简单,适合SEO,导航,次导航,最新文章列表,随机文章列表全部都有,网站采用扁平结构,非常适用淘宝客类小站,所有文章都在根目录下。所有需要修改的地方在网页上各个地方都有标注说明,一切在网站后台都可以修改,无须修改任何程序代码,是新手的不二选择。后台登陆地址: 域名/login.asp用户名:admin (建议不要修改)密码:adm

      下载
      • toDo:一个数组,用于存储待办事项。
      • constructor(render):构造函数,接收一个 Render 实例作为参数,并调用 renderList 方法来初始化列表的显示。
      • addTask(task):添加任务到 toDo 数组,并调用 renderList 方法来更新列表的显示。
      • removeTask(task):从 toDo 数组中删除任务,并调用 renderList 方法来更新列表的显示。 这里使用了 filter 方法创建了一个新的数组,其中不包含要删除的 task,然后将新的数组赋值给 this.toDo。

      3. Render 类

      Render 类负责处理用户界面交互和渲染待办事项列表。它包含事件监听器,用于监听添加按钮的点击事件和删除按钮的点击事件,并调用 renderList 方法来更新列表的显示。

      // Render.js
      class Render {
          constructor(input) {
              this.input = input;
              const taskInput = this.input.querySelector("input");
              const addButton = this.input.querySelector("button");
              const ul = this.input.querySelector(".tasks");
      
              addButton.addEventListener("click", () => {
                  const task = taskInput.value.trim();
                  if (task !== "") {
                      list.addTask(task);
                      taskInput.value = "";
                  }
              });
      
              ul.addEventListener("click", (event) => {
                  if (event.target.tagName === "BUTTON") {
                      const task = event.target.previousSibling.textContent;
                      list.removeTask(task);
                  }
              });
          }
      
          renderList(toDo) {
              const ul = this.input.querySelector(".tasks");
              ul.innerHTML = "";
              toDo.forEach((task) => {
                  const li = document.createElement("li");
                  li.textContent = task;
                  const deleteButton = document.createElement("button");
                  deleteButton.textContent = "Delete";
                  li.appendChild(deleteButton);
                  ul.appendChild(li);
              });
          }
      }
      
      const render = new Render(document.querySelector("#to-do-container"));
      const list = new List(render);

      代码解释:

      • constructor(input):构造函数,接收包含待办事项列表元素的容器作为参数。它获取输入框、添加按钮和
          元素的引用,并添加事件监听器。
      • 添加按钮的点击事件监听器:当点击添加按钮时,它会获取输入框中的文本,如果文本不为空,则调用 list.addTask(task) 方法将任务添加到列表中,并清空输入框。
        • 元素的点击事件监听器:当点击
            元素中的任何元素时,它会检查点击的元素是否是删除按钮。如果是删除按钮,则获取其前一个兄弟节点的文本内容(即任务文本),并调用 list.removeTask(task) 方法从列表中删除任务。
      • renderList(toDo):此方法接收待办事项列表数组作为参数,并更新
          元素的显示。它首先清空
            元素的内容,然后遍历 toDo 数组,为每个任务创建一个
          • 元素,并创建一个删除按钮。将任务文本和删除按钮添加到
          • 元素,然后将
          • 元素添加到
              元素。

          4. 初始化

          最后,我们需要创建 Render 和 List 类的实例,并将 Render 实例传递给 List 类的构造函数。

          const render = new Render(document.querySelector("#to-do-container"));
          const list = new List(render);

          注意事项

          • 代码组织: 将 List 和 Render 类分别放在单独的 JavaScript 文件中,并在 HTML 文件中引用它们。
          • 错误处理: 在实际应用中,应该添加错误处理机制,例如,当输入框中的文本为空时,给出提示信息。
          • 样式: 可以使用 CSS 来美化待办事项列表的样式。
          • 数据持久化: 可以使用 Local Storage 或其他存储机制来实现数据的持久化,以便在刷新页面后仍然保留待办事项。

          总结

          通过本文,你学习了如何使用 JavaScript 类构建一个简单的待办事项列表。你了解了如何使用面向对象编程的思想来组织和管理前端代码,以及如何处理用户输入和动态更新页面内容。这个例子可以作为你构建更复杂前端应用的起点。

    热门AI工具

    更多
    DeepSeek
    DeepSeek

    幻方量化公司旗下的开源大模型平台

    豆包大模型
    豆包大模型

    字节跳动自主研发的一系列大型语言模型

    通义千问
    通义千问

    阿里巴巴推出的全能AI助手

    腾讯元宝
    腾讯元宝

    腾讯混元平台推出的AI助手

    文心一言
    文心一言

    文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

    讯飞写作
    讯飞写作

    基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

    即梦AI
    即梦AI

    一站式AI创作平台,免费AI图片和视频生成。

    ChatGPT
    ChatGPT

    最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

    相关专题

    更多
    go语言 面向对象
    go语言 面向对象

    本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

    56

    2025.09.05

    java面向对象
    java面向对象

    本专题整合了java面向对象相关内容,阅读专题下面的文章了解更多详细内容。

    52

    2025.11.27

    点击input框没有光标怎么办
    点击input框没有光标怎么办

    点击input框没有光标的解决办法:1、确认输入框焦点;2、清除浏览器缓存;3、更新浏览器;4、使用JavaScript;5、检查硬件设备;6、检查输入框属性;7、调试JavaScript代码;8、检查页面其他元素;9、考虑浏览器兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

    187

    2023.11.24

    点击input框没有光标怎么办
    点击input框没有光标怎么办

    点击input框没有光标的解决办法:1、确认输入框焦点;2、清除浏览器缓存;3、更新浏览器;4、使用JavaScript;5、检查硬件设备;6、检查输入框属性;7、调试JavaScript代码;8、检查页面其他元素;9、考虑浏览器兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

    187

    2023.11.24

    li是什么元素
    li是什么元素

    li是HTML标记语言中的一个元素,用于创建列表。li代表列表项,它是ul或ol的子元素,li标签的作用是定义列表中的每个项目。本专题为大家li元素相关的各种文章、以及下载和课程。

    419

    2023.08.03

    2026赚钱平台入口大全
    2026赚钱平台入口大全

    2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

    31

    2026.01.31

    高干文在线阅读网站大全
    高干文在线阅读网站大全

    汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

    20

    2026.01.31

    无需付费的漫画app大全
    无需付费的漫画app大全

    想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

    28

    2026.01.31

    漫画免费在线观看地址大全
    漫画免费在线观看地址大全

    想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

    4

    2026.01.31

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    Sass 教程
    Sass 教程

    共14课时 | 0.8万人学习

    Bootstrap 5教程
    Bootstrap 5教程

    共46课时 | 3.1万人学习

    CSS教程
    CSS教程

    共754课时 | 25.7万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号