js动态新增/删除table表的行和列

2024-04-20 00:58

本文主要是介绍js动态新增/删除table表的行和列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

亲测兼容谷歌,360,火狐,IE8
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>javascript删除行和列</title><script language="javascript" type="text/javascript">function findObj(theObj, theDoc) {var p, i, foundObj;if (!theDoc) theDoc = document;if ((p = theObj.indexOf("?")) > 0 && parent.frames.length) {theDoc = parent.frames[theObj.substring(p + 1)].document; theObj = theObj.substring(0, p);}if (!(foundObj = theDoc[theObj]) && theDoc.all)foundObj = theDoc.all[theObj]; for (i = 0; !foundObj && i < theDoc.forms.length; i++) foundObj = theDoc.forms[i][theObj]; for (i = 0; !foundObj &&
theDoc.layers && i < theDoc.layers.length; i++) foundObj = findObj(theObj, theDoc.layers[i].document);if (!foundObj && document.getElementById)foundObj = document.getElementById(theObj); return foundObj;}//添加一个列count = 1;function AddNewColumn() {var txtTDLastIndex = findObj("txtTDLastIndex", document);var columnID = parseInt(txtTDLastIndex.value);var tab = document.getElementById("tab");var rowLength = tab.rows.length;var columnLength = tab.rows[1].cells.length;for (var i = 0; i < rowLength; i++) {if (i == 0) {var oTd = tab.rows[0].insertCell(columnLength);oTd.innerHTML = "<div align='center' style='width:40px'><a href='javascript:' οnclick=\"DeleteSignColumn(" + (++columnID) + ")\">删除</a></div>";} else if (i == 1) {//第一列:序号var oTd = tab.rows[1].insertCell(columnLength);oTd.innerHTML = "<div style='background: #D3E6FE;width=100%;'>" + (++count) + "</div>";} else if (i > 1) {var oTd = tab.rows[i].insertCell(columnLength);oTd.id = "column" + columnID;oTd.innerHTML = "<textarea id=''  rows='4' style='width:150; height:40px;'></textarea>";}}}//添加一个行var index = 1;function AddNewRow() {var txtTRLastIndex = findObj("txtTRLastIndex", document);var rowID = parseInt(txtTRLastIndex.value);var tab = findObj("tab", document);var columnLength = tab.rows[0].cells.length;//添加行var newTR = tab.insertRow(tab.rows.length);newTR.id = "SignItem" + rowID;for (var i = 0; i < columnLength; i++) {if (i == 0) {//第一列:序号newTR.insertCell(0).innerHTML = ++index;} else if (i > 0 && i < 4) {newTR.insertCell(i).innerHTML = "<input id='textItem0' type='text' style='border: 0px' size='12' />";}else if (i >= 4) {newTR.insertCell(i).innerHTML = "<textarea id=''  rows='4' style='width:150; height:40px;'></textarea>";}}//添加列:删除按钮var lastTd = newTR.insertCell(columnLength);lastTd.innerHTML = "<div align='center' style='width:40px'><a href='javascript:' οnclick=\"DeleteSignRow('SignItem" + rowID + "')\">删除</a></div>";//将行号推进下一行txtTRLastIndex.value = (rowID + 1).toString();}//删除指定行function DeleteSignRow(rowid) {var tab = findObj("tab", document);var signItem = findObj(rowid, document);//获取将要删除的行的Indexvar rowIndex = signItem.rowIndex;//删除指定Index的行tab.deleteRow(rowIndex);//重新排列序号,如果没有序号,这一步省略for (i = 2; i < tab.rows.length; i++) {tab.rows[i].cells[0].innerHTML = i - 1;}--index}//删除指定列function DeleteSignColumn(columnId) {var tab = document.getElementById("tab");var columnLength = tab.rows[1].cells.length;//删除指定单元格 for (var i = 0; i < tab.rows.length; i++) {tab.rows[i].deleteCell(columnId);}//重新排列序号,如果没有序号,这一步省略var column = columnLength - 4;for (var j = 1; j < column; j++) {tab.rows[1].cells[j + 3].innerHTML = "<div style='background: #D3E6FE;width=100%;'>" + j + "</div>";}--count;}//清空列表function ClearAllSign() {//if (confirm('确定要清空所有吗?')) {index = 0;var tab = findObj("tab", document);var rowscount = tab.rows.length;//循环删除行,从最后一行往前删除for (i = rowscount - 1; i > 1; i--) {tab.deleteRow(i);}//重置最后行号为1var txtTRLastIndex = findObj("txtTRLastIndex", document);txtTRLastIndex.value = "1";//预添加一行AddNewRow();//}}</script>
<style>
table *{border:1px red solid;}
</style>
</head>
<body>
<div style="overflow: auto; height: 350px; width: 860px; padding: 10px;"><table cellpadding="1" id="tab" cellspacing="0" bordercolor="#A3C0E8" border="1"style="text-align: center"><tr id="tr1"><td></td><td></td><td></td><td></td><td></td></tr><tr id="trHeader"><td style="background: #D3E6FE">NO</td><td style="background: #D3E6FE">试验项目</td><td style="background: #D3E6FE">检验项目</td><td style="background: #D3E6FE">标准</td><td style="background: #D3E6FE">1</td></tr><tr><td>1</td><td><input id='textItem0' type='text' style="border: 0px" size='12' /></td><td><input id='checkItem0' type='text' style="border: 0px" size='12' /></td><td><input id='stand0' type='text' style="border: 0px" size='12' /></td><td><textarea rows="4" id="" style="width: 150px; height: 40px;"></textarea></td></tr></table><table cellpadding="1" cellspacing="0" bordercolor="#A3C0E8" border="1" style="text-align: center"><tr><td style="background: #D3E6FE"></td><td style="background: #D3E6FE"><input type="button" name="Submit" value="新增行" οnclick="AddNewRow()" /></td><td style="background: #D3E6FE"><input type="button" name="Submit" value="新增列" οnclick="AddNewColumn()" /></td><td style="background: #D3E6FE"><input type="button" name="Submit2" value="全部清空" οnclick="ClearAllSign()" /></td><td style="background: #D3E6FE"><input name='txtTRLastIndex' type='hidden' id='txtTRLastIndex' value="1" /><input name='txtTDLastIndex' type='hidden' id='txtTDLastIndex' value="4" /></td></tr></table></div>
</body>
</html>

效果图为:


结果为:


这篇关于js动态新增/删除table表的行和列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/918898

相关文章

MySQL中删除重复数据SQL的三种写法

《MySQL中删除重复数据SQL的三种写法》:本文主要介绍MySQL中删除重复数据SQL的三种写法,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录方法一:使用 left join + 子查询删除重复数据(推荐)方法二:创建临时表(需分多步执行,逻辑清晰,但会

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

如何用Python绘制简易动态圣诞树

《如何用Python绘制简易动态圣诞树》这篇文章主要给大家介绍了关于如何用Python绘制简易动态圣诞树,文中讲解了如何通过编写代码来实现特定的效果,包括代码的编写技巧和效果的展示,需要的朋友可以参考... 目录代码:效果:总结 代码:import randomimport timefrom math

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.

Java中JSON字符串反序列化(动态泛型)

《Java中JSON字符串反序列化(动态泛型)》文章讨论了在定时任务中使用反射调用目标对象时处理动态参数的问题,通过将方法参数存储为JSON字符串并进行反序列化,可以实现动态调用,然而,这种方式容易导... 需求:定时任务扫描,反射调用目标对象,但是,方法的传参不是固定的。方案一:将方法参数存成jsON字

Python按条件批量删除TXT文件行工具

《Python按条件批量删除TXT文件行工具》这篇文章主要为大家详细介绍了Python如何实现按条件批量删除TXT文件中行的工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.简介2.运行效果3.相关源码1.简介一个由python编写android的可根据TXT文件按条件批

.NET利用C#字节流动态操作Excel文件

《.NET利用C#字节流动态操作Excel文件》在.NET开发中,通过字节流动态操作Excel文件提供了一种高效且灵活的方式处理数据,本文将演示如何在.NET平台使用C#通过字节流创建,读取,编辑及保... 目录用C#创建并保存Excel工作簿为字节流用C#通过字节流直接读取Excel文件数据用C#通过字节

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C