前端【11】HTML+CSS+jQUery实战项目--实现一个简单的todolist

ops/2025/2/2 11:33:49/
htmledit_views">

html" title=前端>前端【8】HTML+CSS+javascript实战项目----实现一个简单的待办事项列表 (To-Do List)-CSDN博客 

        学过jQUery可以极大简化js代码的编写,基于之前实现的todolist小demo,了解如何使用 jQuery 来实现常见的动态交互功能。

修改后的js代码

关键点解析

  1. 动态添加元素:通过 append 方法动态添加表格行,并为每一行生成唯一的 index 属性。

  2. 事件委托:使用 on 方法将事件委托给 tbody,确保动态添加的元素也能触发事件。

  3. 样式控制:通过 css 方法动态修改文本和按钮的样式,实现任务完成状态的切换。

  4. 数据回显:点击“修改”按钮时,将任务内容回显到输入框中,方便用户修改。

// 定义标识,用于生成唯一的索引值
var flag = 1;// 存储当前修改的是哪条信息的索引
var targetFlag = 0;// 添加新行/修改    
$(".btn").on("click", function () {// 获取输入框的内容并去除首尾空格var text = $(".content").val().trim();// 如果输入框内容为空,弹出提示if (text.length == 0) {alert("请输入内容");} else {// 如果按钮的值为“修改”,则执行修改逻辑if ($('.btn').val() == "修改") {// 获取所有第一列的td元素var tds = $('tbody tr td:nth-child(1)');// 遍历所有td元素,找到与targetFlag匹配的索引for (var i = 0; i < tds.length; i++) {if (tds.eq(i).attr('index') == targetFlag) {// 修改对应td的文本内容tds.eq(i).text(text);}}// 将按钮的值重置为“添加”$('.btn').val("添加");// 清空输入框内容$(".content").val('');return;}// 使用输入的内容创建新行$("tbody").append('<tr>' +'<td index=' + (flag++) + '>' + text + '</td>' + // 第一列,显示文本内容,并赋予唯一索引'<td>' +'<input type="button" value="完成" class="finish">' + // 完成按钮'<input type="button" value="删除" class="delete">' + // 删除按钮'<input type="button" value="修改" class="update">' + // 修改按钮'</td>' +'</tr>');// 清空输入框内容$(".content").val('');}
});// 完成/恢复按钮点击事件
$("tbody").on("click", ".finish", function () {// 获取当前点击的按钮的上一个兄弟元素(即文本所在的td)var target = $(this).parent().prev();// 如果按钮的值为“恢复”if ($(this).val() == "恢复") {// 将按钮的值改为“完成”,并设置样式$(this).val("完成").css({'color': '#910000','border-color': '#910000'});// 设置文本的样式为未完成状态target.css({'color': '#910000','textDecoration': 'none',});} else {// 将按钮的值改为“恢复”,并设置样式$(this).val("恢复").css({'color': '#888','border-color': '#888'});// 设置文本的样式为完成状态(灰色,带删除线)target.css({'color': '#888','textDecoration': 'line-through',});}
});// 删除按钮点击事件
$("tbody").on("click", ".delete", function () {// 如果前一个按钮的值为“恢复”(即任务已完成)if ($(this).prev().val() == "恢复") {// 弹出确认框,确认是否删除if (confirm('确定要删除吗')) {// 删除当前行的tr元素$(this).parent().parent().remove();}} else {// 如果任务未完成,弹出提示alert("请努力完成!!");}
});// 修改按钮点击事件
$("tbody").on("click", ".update", function () {// 如果前一个按钮的值为“完成”(即任务未完成)if ($(this).prev().prev().val() == "完成") {// 获取当前行的文本内容var text = $(this).parent().prev().text();// 获取当前行的索引值targetFlag = $(this).parent().prev().attr('index');// 将文本内容回显到输入框$('.content').val(text);// 将按钮的值改为“修改”$(".btn").val("修改");} else {// 如果任务已完成,弹出提示alert("已经完成啦不用再改啦");// 清空输入框内容$('.content').val("");}
});

修改后的html代码

html"><!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><link rel="stylesheet" href="css/todolist.css"><script src="js/jQuery.min.js"></script><script src="js/todolist_jquery.js" defer></script>
</head><body><div class="container"><div class="top"><input type="text" class="content"><input type="button" value="添加" class="btn"></div><table border="1"><thead><tr><th>内容</th><th>操作</th></tr></thead><tbody><!-- <tr><td>今天学习</td><td><input type="button" value="完成" class="finish"><input type="button" value="删除" class="delete"><input type="button" value="修改" class="update"></td></tr><tr><td>今天学习</td><td><input type="button" value="完成" class="finish"><input type="button" value="删除" class="delete"><input type="button" value="修改" class="update"></td></tr><tr><td>今天学习</td><td><input type="button" value="完成" class="finish"><input type="button" value="删除" class="delete"><input type="button" value="修改" class="update"></td></tr><tr><td>今天学习</td><td><input type="button" value="完成" class="finish"><input type="button" value="删除" class="delete"><input type="button" value="修改" class="update"></td></tr> --></tbody></table></div>
</body></html>

 至此html" title=前端>前端的学习暂时告一段落啦~


http://www.ppmy.cn/ops/155023.html

相关文章

通过 Docker 部署 pSQL 服务器的教程

在这篇文章中&#xff0c;我们将深入探讨如何利用 Docker 在 Azure 上快速部署 PostgreSQL&#xff08;pSQL&#xff09;服务器。这个过程不仅简单高效&#xff0c;还能为你的开发环境提供强大的支持。 如何使用 Edu 邮箱申请 Azure 订阅并开通免费的 VPS 首先&#xff0c;你…

基于SpringBoot的新闻资讯系统的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

C# 类与对象详解

.NET学习资料 .NET学习资料 .NET学习资料 在 C# 编程中&#xff0c;类与对象是面向对象编程的核心概念。它们让开发者能够将数据和操作数据的方法封装在一起&#xff0c;从而构建出模块化、可维护且易于扩展的程序。下面将详细介绍 C# 中类与对象的相关知识。 一、类的定义 …

变量和常量

一.变量 1.标准声明 var 变量名 变量类型 变量声明行末不需要分号 2..批量声明 package main import "fmt" func main(){var(a string b int c boold float32)}3.变量的初始化 var a int 10 var b float321.1 4.类型推导 var name"tom" var age18 fmt.Pr…

Docker + Nginx 部署个人静态博客指南

本文是一个使用 Docker 和 Nginx 部署个人静态博客的指南。通过本指南&#xff0c;您可以快速了解如何使用 Docker 和 Nginx 部署自己的静态博客网站。 前提 在开始使用本指南之前&#xff0c;请具备以下前提&#xff1a; 首先你得有个服务器服务器已经安装好Git、Vim等工具一…

【实战篇章】深入探讨:服务器如何响应前端请求及后端如何查看前端提交的数据

文章目录 深入探讨&#xff1a;服务器如何响应前端请求及后端如何查看前端提交的数据一、服务器如何响应前端请求HTTP 请求生命周期全解析1.前端发起 HTTP 请求&#xff08;关键细节强化版&#xff09;2. 服务器接收请求&#xff08;深度优化版&#xff09; 二、后端如何查看前…

Git进阶之旅:Git 配置信息 Config

Git 配置级别&#xff1a; 仓库级别&#xff1a;local [ 优先级最高 ]用户级别&#xff1a;global [ 优先级次之 ]系统级别&#xff1a;system [ 优先级最低 ] 配置文件位置&#xff1a; git 仓库级别对应的配置文件是当前仓库下的 .git/configgit 用户级别对应的配置文件时用…

pytorch生成对抗网络

人工智能例子汇总&#xff1a;AI常见的算法和例子-CSDN博客 生成对抗网络&#xff08;GAN&#xff0c;Generative Adversarial Network&#xff09;是一种深度学习模型&#xff0c;由两个神经网络组成&#xff1a;生成器&#xff08;Generator&#xff09;和判别器&#xff0…