使用 JavaScript 类构建可交互的 ToDo List

使用 javascript 类构建可交互的 todo list

本文将指导你如何使用 JavaScript 类来构建一个简单的、可交互的 ToDo List 应用。我们将创建两个类:List 用于管理任务列表,Render 用于处理用户界面 (UI) 的渲染和交互。通过本文,你将学习如何使用面向对象编程 (OOP) 的思想来组织和管理你的代码,并实现一个功能完善的 ToDo List。

ToDo List 类的设计与实现

我们将使用两个类来构建 ToDo List:List 类负责管理任务数据,Render 类负责渲染 UI 和处理用户交互。

List 类

List 类负责存储和管理 ToDo List 中的任务。它包含以下方法:

constructor(render): 构造函数,接收 Render 类的实例作为参数,用于在任务列表发生变化时通知 UI 进行更新。addTask(task): 添加新的任务到 toDo 数组中,并调用 render.renderList() 更新 UI。removeTask(task): 从 toDo 数组中移除指定的任务,并调用 render.renderList() 更新 UI。

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);  }}

注意事项:

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

toDo 数组用于存储任务列表。addTask 和 removeTask 方法都会调用 render.renderList() 来确保 UI 与数据同步。removeTask 方法使用了 filter 方法创建一个新的数组,其中不包含要删除的任务。 word !== task 这里使用了严格的不等运算符,确保类型和值都不同,避免出现意外情况。

Render 类

Render 类负责处理 UI 的渲染和用户交互。它包含以下方法:

constructor(input): 构造函数,接收包含 ToDo List UI 元素的 DOM 元素作为参数,并绑定事件监听器。renderList(toDo): 接收 toDo 数组作为参数,并根据数组中的任务动态生成 HTML 元素,更新 UI。

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);    });  }}

注意事项:

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

构造函数中,我们通过 querySelector 方法获取 input 输入框、添加按钮和 ul 列表等元素,并绑定了点击事件监听器。添加按钮的点击事件处理函数会获取输入框中的任务内容,并调用 list.addTask() 方法添加任务。renderList 方法会清空 ul 列表,然后根据 toDo 数组中的任务动态生成 li 元素,并添加到 ul 列表中。每个 li 元素都包含一个删除按钮,点击删除按钮会调用 list.removeTask() 方法删除任务。trim() 方法用于去除输入框中的空格,避免添加空任务。

HTML 结构

以下是 ToDo List 的 HTML 结构:

                  Document          div {        margin: 80px auto;        text-align: center;      }      input {        width: 20%;      }            

    注意事项:

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

    确保 List.js 和 Render.js 文件已正确引入。to-do-container div 包含了 ToDo List 的所有 UI 元素。tasks ul 列表用于显示任务列表。

    初始化

    最后,我们需要创建 List 和 Render 类的实例,并将它们关联起来:

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

    注意事项:

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

    确保在 HTML 文件加载完成后再执行这段代码,否则可能无法获取到 DOM 元素。

    总结

    通过以上步骤,我们就完成了一个简单的、可交互的 ToDo List 应用。这个示例展示了如何使用 JavaScript 类来组织和管理代码,以及如何使用事件监听器来处理用户交互。你可以根据自己的需求对这个示例进行扩展,例如添加任务优先级、完成状态等功能。

    关键点:

    使用类来组织和管理代码,提高代码的可读性和可维护性。使用事件监听器来处理用户交互,实现动态更新 UI。确保 UI 与数据同步,避免出现不一致的情况。代码的健壮性非常重要,比如处理空输入,错误输入等情况。

    以上就是使用 JavaScript 类构建可交互的 ToDo List的详细内容,更多请关注创想鸟其它相关文章!

    版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
    如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
    发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/135898.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2025年11月29日 19:50:28
    下一篇 2025年11月29日 20:25:02

    相关推荐

    • 主播集结:Web2巨头颤抖,Pump.fun与Soulbound.TV点燃流媒体金融风暴

      pump.fun 与 soulbound.tv 正在推动一场以创作者为核心的运动,通过将收入直接分享给内容创作者,挑战如 twitch 和 tiktok 等传统 web2 巨头的地位。 流媒体行业正经历深刻变革,而这一变化的推动力正是来自 Pump.fun 与 Soulbound.TV 的合作。这些…

      2025年12月8日
      000
    • Chainlink价格激增:乘着流动性浪潮攀升新高?

      chainlink (link) 凭借近期价格攀升正引发市场热议,这波涨势得益于流动性的显著提升。它是否能冲破关键阻力位,迈向新的价值高峰? Chainlink 价格上涨:流动性浪潮推动下冲击新高? Chainlink(LINK)目前展现出强劲的上涨动能,背后推手是不断增长的流动性及强烈的买入意愿。…

      2025年12月8日
      000
    • 加密货币白名单狂潮:MoonBull会成为下一个TRUMP Cheems吗?

      moonbull 的独特白名单策略正在引发模因币(meme coin)市场的震动。它是否将成为下一个爆点?还是 dogecoin 和 trump cheems 等老牌项目依旧稳居主导地位? 加密世界瞬息万变,而当前的焦点正落在 MoonBull 身上。凭借其创新的白名单发行方式,MoonBull 正…

      2025年12月8日
      000
    • 狗狗币、区块链储备与C2区块链:模因资产的新时代?

      c2 区块链战略储备 dog 币,象征着迷因文化、比特币技术与公开金融市场之间日益融合的趋势。 嘿,加密世界的朋友们!你是否曾想象过迷因币会成为区块链储备的一部分?C2 区块链正将这一想法变为现实,这无疑是一个令人振奋的尝试。接下来,让我们一起看看 DOG 币热潮背后的动因,以及它如何影响区块链行业…

      2025年12月8日
      000
    • 加密货币精选与山寨币突破:八月最热趋势

      深入八月加密货币市场!发掘如blockdag、mutuum finance和sei等有望爆发的优质替代币种,掌握最新趋势。 加密精选 & 替代币爆发:八月最热趋势 加密市场持续波动,而八月注定将成为充满机遇的一个月!除了主流币种外,越来越多精明投资者开始聚焦那些具备爆发潜力的优质替代币。让我…

      2025年12月8日
      000
    • GameStop、Ryan Cohen 与加密货币支付:一个新时代?

      在 ryan cohen 的带领下,gamestop 不断发展的加密货币策略,涵盖比特币投资与可能的加密支付整合 GameStop、Ryan Cohen 与加密支付:是否迎来全新时代? GameStop 正在更深入地涉足加密领域,Ryan Cohen 暗示可能引入比特币等加密货币支付方式。对这家零售…

      2025年12月8日
      000
    • Bittensor、NEAR 和 ICP:乘着人工智能加密浪潮前行

      深入了解bittensor、near与icp:这些由ai驱动的加密货币正以其创新技术和出色的市场表现重塑加密世界。 Bittensor、NEAR 与 ICP:AI加密浪潮中的领航者 AI与大数据驱动的加密市场正在快速崛起,Bittensor、NEAR协议以及互联网计算机(ICP)成为这一趋势中的佼佼…

      2025年12月8日
      000
    • 谷歌AI、专业计划与印度学生:梳理Pi网络的热议

      探索 pi network、google ai 以及这对印度学生意味着什么 Google AI、Pro Plan 与印度学生:揭开 Pi Network 热潮背后的真相 加密货币领域最近再度引发热议,Pi Network 和 Google AI 成为焦点,特别是这一切对印度学生可能带来的影响。这两者…

      2025年12月8日
      000
    • 币圈行情网站哪些靠谱?币圈安全靠谱的实时行情网站前三名汇总(内附地址)

      CoinMarketCap、CoinGecko和OKX行情中心是币圈公认的三大靠谱行情网站。一、CoinMarketCap数据覆盖广,支持多维展示,更新快且支持中文;二、CoinGecko专注DeFi与NFT,界面简洁,适配移动端;三、OKX行情中心集成交易功能,数据精准,支持多赛道分类查看。此外,…

      2025年12月8日
      000
    • XRP、比特币与加密货币反弹:是什么在推动市场?

      xrp领涨,比特币盘整:近期加密货币反弹背后的原因及对投资者的意义 加密市场最近热闹非凡。虽然比特币表现相对平稳,但XRP却成为了焦点。随着潜在的ETF获批和监管前景逐渐明朗,市场正在升温。让我们深入了解这波反弹背后的推动力。 XRP的意外飙升 当比特币和以太坊还在阻力位下方震荡时,XRP已成为最活…

      2025年12月8日
      000
    • 2025年最受欢迎的比特币交易应用TOP10(按照交易量)

      数字资产交易平台在不断演进的市场中扮演着核心角色。这些平台凭借其技术实力、用户基础和产品广度,为全球范围内的比特币及其他加密货币交易提供了必要的基础设施。它们不仅仅是买卖数字货币的场所,更集成了复杂的金融工具、安全防护机制以及多元化的生态服务。在高度竞争的行业环境里,交易量作为衡量平台活跃度和流动性…

      2025年12月8日 好文分享
      000
    • 币安、比特币、山寨币升级:有什么值得关注的?

      深入解析币安对thorchain的支持、比特币价格震荡及可能来临的山寨币热潮 币安、比特币、山寨币动态:市场聚焦哪些热点? 加密世界永不停歇!从币安助力网络升级到比特币价格波动,再到可能出现的山寨币上涨行情,总有新鲜事发生。我们来一探究竟! 币安支持 THORChain (RUNE) 网络升级 币安…

      2025年12月8日
      000
    • XRP价格、图表形态与上涨潜力:乘上38美元的浪潮?

      分析 xrp 价格走势、图表模式与巨大上涨潜力,包含一个激进的 $38 目标。这是现实预测还是单纯炒作? XRP:是真正的上升动能还是虚幻泡沫? XRP 再度成为焦点,分析师正在密切关注其技术图形及潜在大幅反弹信号。但这份热情是否站得住脚?我们来深入剖析关键趋势和展望。 $38 的目标:真实可能还是…

      2025年12月8日
      000
    • 比特币、XRP 与凯蒂·斯托克顿:驾驭加密货币的浪潮

      比特币狂潮、xrp人工智能预测与katie stockton在加密动荡中的技术视角 比特币、XRP与Katie Stockton:穿越加密风暴 加密市场风起云涌!比特币价格屡破纪录,XRP借力AI预测波动剧烈,而分析师Katie Stockton持续带来专业解读。我们来逐一剖析这些热点。 比特币强势…

      2025年12月8日
      000
    • 稳定币真的稳定吗?可能的崩盘风险分析

      稳定币在极端行情和项目不透明的背景下并不绝对稳定。1.USDT因储备不透明存在风险;2.USDC受监管合规性较强,透明度较高;3.DAI依赖加密抵押,机制相对稳健;4.BUSD因政策压力逐步下架;5.USDN已脱锚警示市场风险。此外,主流交易平台如Binance、欧意OKX、Gate.io支持多种稳…

      2025年12月8日
      000
    • 十大热门虚拟币交易app 全球十大加密货币交易平台

      在数字经济浪潮中,加密货币交易平台扮演着关键角色,它们是连接用户与数字资产世界的桥梁。随着虚拟货币市场的日益壮大,选择一个安全、可靠、功能丰富的交易平台变得至关重要。这些平台不仅提供数字货币的买卖服务,更是用户进行资产管理、参与新兴金融活动的核心枢纽。一个优质的交易平台通常具备强大的技术基础设施、深…

      2025年12月8日 好文分享
      000
    • 去中心化身份验证普及:Web3隐私保护的新篇章?

      去中心化身份验证(DID)平台正成为Web3身份管理的核心工具,本文盘点了10大主流DID平台及其隐私优势与使用路径,并列举了4个主流Web3平台的DID入口方式。推荐的DID平台包括ENS、Unstoppable Domains、Polygon ID等,各自具备兼容性强、隐私保护好、开发灵活等特点…

      2025年12月8日
      000
    • $ANI、$RUDI爆拉50倍,下一只“金狗”你还要错过吗?

      $ANI、$RUDI暴涨的背后逻辑 1、$ani 通过社区共建+ai叙事结合的方式,快速吸引大量用户参与任务,短期内实现价格飙升。 2、$RUDI 则凭借超强的社交传播能力,形成了用户间的互动闭环,激活裂变效应。 3、两者都具备低流通+强社区共识的特征,这使得价格短期拉升成为可能。 普通用户如何参与…

      2025年12月8日
      000
    • 手把手教你白嫖$ANI和$RUDI,适合新手入门

      $ANI和$RUDI是什么? 1、$ani 是近期在社区热度快速上升的项目,主打轻量化ai+区块链方向,常出现在各大空投活动中。 2、$RUDI 则是一个更偏向于社交传播的代币,用户活跃度高,传播方式简单,适合刚入门的新人尝试。 3、这两个项目都提供了低门槛参与的方式,不需要投入资金,通过任务和邀请…

      2025年12月8日
      000
    • 稳定币和代币的区别是什么 稳定币究竟是什么

      代币是基于现有区块链平台创建的数字资产,功能多样但价格波动大;稳定币则通过与法币挂钩维持价值稳定,主要用作交易媒介和价值储存。1. 代币包括功能型、治理型等多种类型,其价值受项目发展和市场情绪影响显著;2. 稳定币如USDT、USDC通常由法币或加密资产抵押支撑,价格波动极小。 对于初入加密货币领域…

      2025年12月8日
      000

    发表回复

    登录后才能评论
    关注微信