【jquery实现动态给表格添加删除行,合并指定单元格】

@jquery实现动态给表格添加删除行,合并指定单元格

前端技术

  • jsp
  • jquery

动态添加行

//新增行
$("#addRowBtn").click(function(){var rowEl=$("<tr><td><input type='checkbox' class='checkItem'/></td><td><input name='empId'></input></td><td><input name='empName'></input></td>"+"<td><input name='gender'></input></td><td><input name='email'></input></td><td><input name='deptName'></input></td></tr>");$("#emptTbl").append(rowEl);
});

删除指定行

//删除行
$("#delRowBtn").click(function(){var checkItems=$(".checkItem:checked");if(checkItems.length==0){alert("请先选中需要删除的记录!");}else{$.each(checkItems,function(index,item){$(item).parents('tr').remove();});}});

合并指定列

//合并按钮点击
$("#mergeCellBtn").click(function(){if($("#emptTbl")[0].rows.length>2){//合并部门名mergeCol(5);}});//合并指定列
function mergeCol(colId){var rowLength = $("#emptTbl tr").length;var colLength = $("#emptTbl tr:first")[0].cells.length;var b=1;var i,beginCell,beginCellContent,curCell,curCellContent;if(colId!==0 && colId<colLength){for(i=2;i<rowLength;i++){beginCell =$("#emptTbl")[0].rows[b].cells[colId];beginCellContent=$(beginCell).context.children[0].value;curCell =$("#emptTbl")[0].rows[i].cells[colId];curCellContent=$(curCell).context.children[0].value;if(beginCellContent == curCellContent){//删除相邻行内容相同的单元格$("#emptTbl")[0].rows[i].removeChild($("#emptTbl")[0].rows[i].cells[colId]);//调整内容相同的首个单元格的rowSpan$("#emptTbl")[0].rows[b].cells[colId].rowSpan++;}else{//单元格内容不同时,将起始位置改为当前遍历的单元格的位置b = i;}}}}

完整测试代码jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%String path = request.getContextPath();//获取项目名String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path;
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"><title>jquery实现动态给表格添加删除行,合并指定单元格</title><meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page"><!--路径问题不以/开始的相对路径,找资源,以当前资源的路径为基准,经常容易出现问题而以/开始的相对路径,找资源,是以服务器的  路径为基准(http://localhost:8080/) ,需要加上项目名http://localhost:8080/ssm-crud01-->
<script type="text/javascript" src="<%=path%>/static/js/jquery.min.js"></script>
<link rel="stylesheet" type="text/css"href="<%=path%>/static/bootstrap/bootstrap.min.css">
<script type="text/javascript"src="<%=path%>/static/bootstrap/bootstrap.min.js"></script></head><body><div class="container"><!--显示标题栏 --><div class="row"><div class="col-md-12"><h1>TEST</h1></div></div><!--按钮  --><div class="row"><div class="col-md-4 col-md-offset-8"><button type="button" id="addRowBtn" class="btn btn-primary">新增</button><button type="button" id="delRowBtn" class="btn btn-danger">删除</button><button type="button" id="mergeCellBtn"class="btn btn-danger">合并部门</button></div></div><!-- 显示表格信息--><div class="row"><div class="col-md-12"><table class="table table-bordered table-hover" id="emptTbl"><tr><th><input type="checkbox" id="checkAll"/></th><th>empId</th><th>empName</th><th>gender</th><th>email</th><th>deptName</th></tr><c:forEach items="${pageInfo.list }" var="emp"><tr><td>${emp.empId}</td><td>${emp.empName }</td><td>${emp.gender=='M'?'男':'女' }</td><td>${emp.email }</td><td>${emp.department.deptName }</td></tr></c:forEach></table></div></div><!-- 显示分页信息 --><div class="row"><!-- 显示分页记录数 --><div class="col-md-6">当前${pageInfo.pageNum}页,共${ pageInfo.pageSize}页,共${pageInfo.total}条记录</div><!-- 显示分页条 --><div class="col-md-6"><nav aria-label="Page navigation"><ul class="pagination"><li><a href="<%=path%>/emps?pn=1">首页</a></li><c:if test="${pageInfo.hasPreviousPage }"><li><a href="<%=path%>/emps?pn=${pageInfo.pageNum-1}" aria-label="Previous"> <spanaria-hidden="true">&laquo;</span></a></li></c:if><c:forEach items="${pageInfo.navigatepageNums}" var="page_num"><c:if test="${page_num==pageInfo.pageNum }"><li class="active"><a href="<%=path%>/emps?pn=${ page_num}">${ page_num}</a></li></c:if><c:if test="${page_num!=pageInfo.pageNum }"><li><a href="<%=path%>/emps?pn=${ page_num}">${ page_num}</a></li></c:if></c:forEach><c:if test="${pageInfo.hasNextPage }"><li><a href="<%=path%>/emps?pn=${pageInfo.pageNum+1}" aria-label="Next"> <spanaria-hidden="true">&raquo;</span></a></li></c:if><li><a href="<%=path%>/emps?pn=${pageInfo.pages}">末页</a></li></ul></nav></div></div></div><script type="text/javascript">//新增行$("#addRowBtn").click(function(){var rowEl=$("<tr><td><input type='checkbox' class='checkItem'/></td><td><input name='empId'></input></td><td><input name='empName'></input></td>"+"<td><input name='gender'></input></td><td><input name='email'></input></td><td><input name='deptName'></input></td></tr>");$("#emptTbl").append(rowEl);});//全选$("#checkAll").click(function(){//获取原始dom节点的属性用prop,获取元素的动态添加的自定义属性时用attr$(".checkItem").prop("checked",$(this).prop("checked"));});//删除行$("#delRowBtn").click(function(){var checkItems=$(".checkItem:checked");if(checkItems.length==0){alert("请先选中需要删除的记录!");}else{$.each(checkItems,function(index,item){$(item).parents('tr').remove();});}});//合并指定列$("#mergeCellBtn").click(function(){if($("#emptTbl")[0].rows.length>2){//合并部门名mergeCol(5);}});//合并指定列function mergeCol(colId){var rowLength = $("#emptTbl tr").length;var colLength = $("#emptTbl tr:first")[0].cells.length;var b=1;var i,beginCell,beginCellContent,curCell,curCellContent;if(colId!==0 && colId<colLength){for(i=2;i<rowLength;i++){beginCell =$("#emptTbl")[0].rows[b].cells[colId];beginCellContent=$(beginCell).context.children[0].value;curCell =$("#emptTbl")[0].rows[i].cells[colId];curCellContent=$(curCell).context.children[0].value;if(beginCellContent == curCellContent){//删除相邻行内容相同的单元格$("#emptTbl")[0].rows[i].removeChild($("#emptTbl")[0].rows[i].cells[colId]);//调整内容相同的首个单元格的rowSpan$("#emptTbl")[0].rows[b].cells[colId].rowSpan++;}else{//单元格内容不同时,将起始位置改为当前遍历的单元格的位置b = i;}}}}</script>
</body>
</html>

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

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

相关文章

NPOI 读取和写入Excel

在C#中使用NPOI库读取和写入Excel文件&#xff0c;你需要先下载并安装NPOI库。你可以在NuGet管理器中搜索NPOI并进行安装。 以下是一个使用NPOI库进行Excel文件读取和写入的示例&#xff1a; 读取Excel文件&#xff1a; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel…

【仿写tomcat】二、扫描java文件,获取带有@WebServlet注解的类

tomcat仿写 项目结构扫描文件servlet注解map容器servlet工具类启动类调用 项目结构 扫描文件之前当然要确定一下项目结构了&#xff0c;我这里的方案是tomcat和项目同级 项目的话就仿照我们平时使用的结构就好了&#xff0c;我们规定所有的静态资源文件都在webApp目录下存放…

【数据库】P1 数据库基本常识

数据库基本常识 数据库 ≠ 数据库管理系统表&#xff08;Table&#xff09;SQL是什么 数据库 ≠ 数据库管理系统 数据库是保存有组织的数据的容器&#xff0c;数据库称为 DB&#xff08;DataBase&#xff09;&#xff1b;数据库管理系统是创建和操纵数据库的软件&#xff0c;数…

充气泵方案设计——便携无线充气泵方案

充气泵方案的进化史是人类历史上电子技术发展史中的一环。电子技术&#xff0c;特别是微电子技术是 20 世纪发展最为迅速、影响最为广泛的技术成就。电子技术的核心是电子器件,电子器件的进步和换代&#xff0c;引起了电子电路极大的变化&#xff0c;出现了很多新的电路和应用。…

java解决mysql大数据联查问题

java解决mysql大数据联查问题 近期有一个需求是联查两张表比对三个字段 一般用mysql就可以解决 SELECT* FROMtb_a aLEFT JOIN b ON a.test b.testAND a.NAME b.NAME AND a.type b.type但是表a和表b的数据量都很不小&#xff0c;大概在10w左右&#xff0c;由于并不是以固定…

Webpact学习笔记记录

Webpact学习笔记记录 一.初始化项目1.生成package.json2.安装webpack3.执行webpack体验 二、webpack的配置文件三、less-loader解析less1.安装loader2.配置 四、eslint-loader语法检查1.安装loader2.配置loader3.在package.json中加入 五、js语法转换1.安装loader2.配置loader …

前端能正常跑起来但是控制台报错数据undefined之onMounted最好不要用异步写法

记录问题 在做项目的时候&#xff0c;项目可以正常运行&#xff0c;但是控制台总是报错&#xff0c;有一个数据是undefined。 分析问题 一般遇到这种情况&#xff0c;就是vue找不到这个数据。但是为什么能正常运行&#xff1f;说明是开始加载的时候找不到数据&#xff0c;但…

Java进阶篇--数据结构

目录 一.数组&#xff08;Array&#xff09;&#xff1a; 1.1 特点&#xff1a; 1.2 基本操作&#xff1a; 1.3 使用数组的好处包括&#xff1a; 1.4 数组也有一些限制&#xff1a; 二.集合框架&#xff08;Collections Framework&#xff09;&#xff1a; 2.1 列表…

当你出差在外时,怎样轻松访问远程访问企业局域网象过河ERP系统?

文章目录 概述1.查看象过河服务端端口2.内网穿透3. 异地公网连接4. 固定公网地址4.1 保留一个固定TCP地址4.2 配置固定TCP地址 5. 使用固定地址连接 概述 ERP系统对于企业来说重要性不言而喻&#xff0c;不管是财务、生产、销售还是采购&#xff0c;都需要用到ERP系统来协助。…

miniconda克隆arcpy

arcpy环境克隆 前言尝试思考到此结束 前言 最近遇到了一些问题&#xff0c;需要用到arcpy来处理一些东西&#xff0c;但众所周知&#xff0c;arcgis的arcpy是python 2.0的&#xff0c;我不是很喜欢&#xff1b;所以我安装了arcgis pro 2.8&#xff0c;我发现这也是个坑&#x…

Git分布式版本控制系统

目录 2、安装git 2.1 初始环境 2.2 Yum安装Git 2.3 编译安装 2.4 初次运行 Git 前的配置 2.5 初始化及获取 Git 仓库 2.6 Git命令常规操作 2.6.2 添加新文件 2.6.3 删除git内的文件 2.6.4 重命名暂存区数据 2.6.5 查看历史记录 2.6.6 还原历史数据 2.6.7 还原未来…

react使用antd的table组件,实现点击弹窗显示对应列的内容

特别提醒&#xff1a;不能在table的columns的render里面设置弹窗组件渲染&#xff0c;因为这会导致弹窗显示的始终是最后一行的内容&#xff0c;因为这样渲染的结果是每一行都会重新渲染一遍这个弹窗并且会给传递一个content的值&#xff0c;渲染到最后一行的时候&#xff0c;就…

Unity的TimeScale的影响范围分析

大家好&#xff0c;我是阿赵。 这期来说一下Unity的TimeScale。 一、前言 Unity提供了Time这个类&#xff0c;来控制时间。其实我自己倒是很少使用这个Time&#xff0c;因为做网络同步的游戏&#xff0c;一般是需要同步服务器时间&#xff0c;所以我比较多是在使用System.Date…

linux驱动 - 20230817

练习: 通过字符设备驱动分步注册方式编写LED灯的驱动&#xff0c;应用程序使用ioctl函数编写硬件控制逻辑 头文件 head.h #ifndef __HEAD_H__ #define __HEAD_H__ typedef struct{unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned…

问道管理:机器人概念走势活跃,新时达涨停,拓斯达、丰立智能等大涨

机器人概念17日盘中走势活跃&#xff0c;到发稿&#xff0c;拓斯达大涨18%&#xff0c;昊志机电涨近16%&#xff0c;丰立智能涨超13%&#xff0c;步科股份、优德精细涨超10%&#xff0c;新时达涨停&#xff0c;天玑科技、兆龙互联、中大力德涨逾9%。 消息面上&#xff0c;8月16…

HTTP 介绍

HTTP 介绍 HTTP 协议一般指 HTTP&#xff08;超文本传输协议&#xff09;。超文本传输协议&#xff08;英语&#xff1a;HyperText Transfer Protocol&#xff0c;缩写&#xff1a;HTTP&#xff09;是一种用于分布式、协作式和超媒体信息系统的应用层协议&#xff0c;是因特网…

Java 计算两个字符的相似度

在Java中&#xff0c;要计算两个字符的相似度&#xff0c;可以借助一些字符串相似度算法。以下是几种常见的字符串相似度算法&#xff1a; Levenshtein距离&#xff1a;也称为编辑距离&#xff0c;用于计算两个字符串之间的最小编辑操作次数&#xff08;插入、删除、替换&…

解决ios隔空播放音频到macos没有声音的问题

解决ios隔空播放音频到macos没有声音的问题 一、检查隔空播放支持设备和系统要求二、打开隔空播放接收器三、重置MAC控制中心进程END 一、检查隔空播放支持设备和系统要求 Mac、iPhone、iPad 和 Apple Watch 上“连续互通”的系统要求 二、打开隔空播放接收器 ps;我设备是同一…

java 并发 简单使用

文章目录 概要代码 概要 java 并发 简单使用 代码 public static final ExecutorService EXECUTOR_GENERAL new ThreadPoolExecutor(100, 1000,0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(10000));int size 1000;List<UserService> userServices …