`

表格行记录动态增加和删除

阅读更多
  • 应用实例1

原版页面增加注释.htm:

可以批量删除表格记录行,通过checkbox选择删除的行;可以批量增加记录行,通过输入框指定行数。

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=shift-js">
    <title>The page of append rows to Table</title>


	<script language="JavaScript">
		// 新增行
		function addRow(){
			var textNum = document.getElementById("rownum");
			// 得到新增行记录的行数
			var index = textNum.value;
			if(!checknum(index)){
				alert("You can only input number in the TEXT!");
				textNum.focus(); 
				textNum.select();
			}
			for(var i = 0; i < index; i++){
				// 得到表格对象
				var tableObj = document.getElementById("mainTb");
				// 得到tbody对象
				var tableBodyObj = document.getElementById("mainBody");
				var newRowObj = document.createElement("tr");
				var newCheckBox = document.createElement("td");
				var newtext1 = document.createElement("td");
				var newtext2 = document.createElement("td");
				var newtext3 = document.createElement("td");
				newCheckBox.innerHTML = '<center><input type="Checkbox" name="checkbox" onclick = "checkBoxSel()"></center>';
				newtext1.innerHTML = '<input type="text" name="newCarName" size="9">';
				newtext2.innerHTML = '<input type="text" name="newCarName" size="9">';
				newtext3.innerHTML = '<input type="text" name="newCarName" size="9">';
				// 新增的tr节点下增加td节点
				newRowObj.appendChild(newCheckBox);  
				newRowObj.appendChild(newtext1); 
				newRowObj.appendChild(newtext2); 
				newRowObj.appendChild(newtext3); 
				// tbody节点下增加tr节点
				tableBodyObj.appendChild(newRowObj);
			}
		}
		// 新增行数选择框检查输入必须是数字
		function checknum(strVal){
			if (strVal.length != 0){
				var r = strVal.match(new RegExp(/^[0-9]+$/));
		    if (r == null){
					return false;
		    }else{
		    	return true;
				}
			}
			return true;
		}
		// 批量删除指定的行
		function deleteRow(){
			var Tblen;
			// 得到所有 checkbox 对象
			var checkbox = document.getElementsByName("checkbox");
			//var checkboxlen = document.all.checkbox.length;
			// 得到所有提交的checkbox个数
			var checkboxlen = checkbox.length;
			var ischecked;
			// 得到删除按钮对象
			var delbutton = document.getElementById("delete");
			for (var i=0; i < checkboxlen; i++){
				// 得到表格行数
		    Tblen = this.mainTb.rows.length;
		    // 最终保留一行记录
		    if (Tblen == 1) 
		    {
		        document.getElementsByName("checkbox")[0].checked = false;
		        alert("A line have to be saved in the ID of mainTb!");
		        // 删除按钮不可用
		        delbutton.disabled = true;
		        return false;
		    }
		    ischecked = checkbox[i].checked;
		    // 如果当前的checkbox选中:删除当前节点,由于删除节点后,下面的节点上移,游标(记录行指针)也应该上移
		    if (ischecked)
		    {
		        // document.all("mainTb").deleteRow(i);
		        document.getElementById("mainTb").deleteRow(i);
		        // 游标(记录行指针)上移
		        i--;
		    }
		    // 重新统计checkbox个数
		    checkboxlen = checkbox.length;
			}
			// 删除操作后按钮状态是不可用
			delbutton.disabled = true;
		}
		// checkbox按钮单击事件处理函数:是否至少选中一行记录,是可以删除操作;如果没有选择,删除按钮不可用
		function checkBoxSel(){
			// 得到删除按钮对象
			var delbutton = document.getElementById("delete");
			if(checkselect()){
				delbutton.disabled = false;
			}else{
				delbutton.disabled = true;
		  }
		}
		
		function checkselect(){
				// 得到所有 checkbox 对象
		    var checkbox = document.getElementsByName("checkbox");
		    // 得到所有提交的checkbox个数
		    var chklength = checkbox.length;
		    var flag = false;
		    for(var i = 0; i < chklength; i++)
		    {
		        if(checkbox[i].checked == true)
		        {
		            flag = true;
		            break;
		        }
		    }
		    if(flag == true)
		    {
		        return true;
		    } else {
		        return false;
		    }
		}
		// 页面加载body内容时执行
    function loadpage(){
			var delbutton = document.getElementById("delete");
			var rownum = document.getElementById("rownum");
			// 初始“删除”按钮不可用
			delbutton.disabled = true;
			// 初始行数输入框内容为空
			rownum.value = "";   
    }
	</script>


</head>
<body style="margin:40px" onload="loadpage()">
<h2>动态表格</h2><hr><br>
<table id="inputTb" border="1" bordercolor="#4682B4" cellspacing="0" align="right">
  <tr>
    <td>
      新增行数:&nbsp;<input type="text" name="rownum" id="rownum" size="2" maxlength="2" >
    </td>
  </tr>
  <tr>
    <td>
      <input type="button" value="增加" onclick="addRow()">
    </td>
  </tr>
  <tr>
    <td>
      <input type="button" value="删除" id="delete" onclick="deleteRow()" disabled="true">
    </td>
  </tr>
</table>
<table id="mainTb" border="1" bordercolor="#4682B4" cellspacing="0" >
  <tbody id="mainBody">
    <tr id="rownumber0">
      <td align="center">
         <input type="Checkbox" name="checkbox" onclick="checkBoxSel()">
      </td>
      <td>
        <input type="text" name="newCarName" size="9">
      </td>
      <td>
        <input type="text" name="newCarName" size="9">
      </td>
      <td>
        <input type="text" name="newCarName" size="9">
      </td>
   </tr>
   <tr id="rownumber1">
     <td align="center">
     	<input type="Checkbox" name="checkbox" onclick="checkBoxSel()">
     </td>
     <td>
       <input type="text" name="newCarName" size="9">
     </td>
     <td>
       <input type="text" name="newCarName" size="9">
     </td>
     <td>
       <input type="text" name="newCarName" size="9">
     </td>
   </tr>
 </tbody>
</table>
</body>
</html>


  • 应用实例2

addLine.htm

删除单行表格记录。

<script language="javascript">
	var i=1;
	function insertStr() {
		i++;
		var td = document.createElement("td"); 
		var tr = document.createElement("tr"); 
		var tbody = document.createElement("tbody"); 
		tr.appendChild(td); 
		tbody.appendChild(tr); 
		var parNode = document.getElementById("table1"); 
		parNode.appendChild(tbody); 
		tr.setAttribute("name","tr"+i);
		tr.setAttribute("id","tr"+i);
		td.innerHTML="<input type='text' name='Tag"+i+"' id='Tag"+i+"' value='Tag"+i+"'><input type='button' value='Delete'  name='Delete"+i+"' id='Delete"+i+"' onClick='javascript:DeleteNode("+i+")'>";
		document.form1.total.value=i;
	}
	function DeleteNode(j){
	 var trnode=document.getElementById("tr"+j);
	 trnode.parentNode.removeChild(trnode);
	}
</script>


<form name="form1" method="post" action="">
    <input name="tag1" type="text" id="tag1" value="Tag1">
    <input name="insert" type="button" id="insert" value="Add a Tag" onClick="insertStr()">
    <input type="hidden" name="total" id="total">
</form>
<table width="400" border="1" cellspacing="0" cellpadding="0" id="table1"></table>


  • 应用实例3

动态添加、删除行,分别通过insertRow,deleteRow方法实现,显示行号,通过rowIndex属性获得,基本可以动态实现相关功能。

<Script Language="Javascript">
var cGetRow=-99999;
var lineNo = 1;
function _(id) {
	return document.getElementById(id);
}
// The index of the row to be deleted. 
// This index starts from 0 and is relative to the logical order (not document order) 
// of all the rows contained inside the table. 
// If the index is -1 the last row in the table is deleted. 
function AddRow(){
	//添加一行
	var newTr = _("tab1").insertRow();
	//添加两列
	var newTd0 = newTr.insertCell();
	var newTd1 = newTr.insertCell();
	//设置列内容和属性
	newTd0.innerHTML = '<input type=checkbox id="box' + lineNo + '" onClick="GetRow()">'; 
	// 测试动态改变innerHTML中的checkbox的id
	alert(_("box" + lineNo).id);
	newTd1.innerText= '新增加行' + lineNo;
	lineNo++;
}

function DelRow(iIndex){
	//删除一行
	if(iIndex==-99999){
		alert("系统提示:没有选中行号!");
	}else{
		iIndex = cGetRow;
		_("tab1").deleteRow(iIndex);
	} 
}

function GetRow(){
	//获得行索引
	//两个parentElement分别是TD和TR哟,rowIndex是TR的属性
	//this.parentElement.parentElement.rowIndex
	cGetRow=window.event.srcElement.parentElement.parentElement.rowIndex; 
}

function ShowRow(){
	//显示行号
	alert(cGetRow);
	//alert(document.getElementsByTagName("tr").length);
}

</script>


<table id="tab1" border=1>
	<tr id="tr1">
		<td width=6%><input type=checkbox id="box1" onClick="GetRow()"></td>
		<td id="a">第一行</td>
	</tr>
	<tr id="tr2">
		<td width=6%><input type=checkbox id="box2" onClick="GetRow()"></td>
		<td id="b">第二行</td>
	</tr>
	<tr id="tr3">
		<td width=6%><input type=checkbox id="box3" onClick="GetRow()"></td>
		<td id="c">第三行</td>
	</tr>
</table>
<table id="tab1" border=1>
	<tr id="tr1">
		<td width=6%><input type=checkbox id="box1" onClick="GetRow()"></td>
		<td id="a">统计</td>
	</tr>
</table>
<input type="submit" name="Submit" value="AddRow" onclick="javascript:AddRow();">
<input type="submit" name="Submit" value="DelRow" onclick="javascript:DelRow(cGetRow);">
<input type="submit" name="Submit" value="ShowRow" onclick="javascript:ShowRow();"> 
分享到:
评论
5 楼 willsonbin 2014-08-15  
赞~实用 
4 楼 fantasyyong 2008-02-29  
另外要注意的是:表格一般有标题行
                     // 表格有2行标题
                     var titleLine = 2;
		for (var i=0; i < checkboxlen; i++){
			// 计算行记录数时除去title行
			tablen = this.detailTable.rows.length - titleLine;
			if(tablen == 1){
				checkboxList[0].checked = false;
				delbutton.disabled = true;
				allSelect.checked = false;
				return false;
			}
			isChecked = checkboxList[i].checked;
			if(isChecked){
				// 游标(记录行指针)下移2行
				document.getElementById("detailTable").deleteRow(i + titleLine);
				i--;
			}
			checkboxlen = checkboxList.length;
		}
3 楼 fantasyyong 2008-02-29  
example01代码中有alert测试语句,其实这个实例中只是实现了一次删除一行的操作。其实重要的是这个功能的实现原理,代码理清后大家完全可以根据实际需求修改。原版页面增加注释.htm这个页面实现了批量的新增和删除行功能,希望大家共同学习,谢谢。
2 楼 j2sej2ee 2008-02-29  
example01里面有问题
1 楼 j2sej2ee 2008-02-29  
自己都不测试就往上贴,有错误

相关推荐

    Layui表格行添加编辑删除操作和保存数据代码.zip

    本资源“Layui表格行添加编辑删除操作和保存数据代码.zip”包含了一个完整的示例,演示了如何在Layui表格中实现动态的行添加、编辑和删除功能,并且将这些操作与数据保存相结合。下面我们将详细探讨这些知识点。 ...

    动态添加js,动态添加表格和删除表格,批量添加记录,批量添加

    动态添加js,动态添加表格和删除表格,批量添加记录,批量添加

    动态插入、添加删除表格行的JS代码

    ### 动态插入、添加删除表格行的JS代码 在网页开发中,表格是一个非常重要的元素,用于展示数据。为了使网页更具交互性,我们常常需要动态地对表格进行操作,比如插入或删除行等。本文将通过一个具体的示例来讲解...

    表格删除线

    "表格删除线"就是这样一个功能,它允许用户在表格中添加删除线,以视觉上标识出已被删除但尚未实际移除的数据行。这样的功能对于版本控制或者协作编辑场景特别有用,因为它提供了明确的修改记录。 首先,让我们来...

    jQuery实现动态添加、删除按钮及input输入框的方法

    在Web前端开发中,动态地添加和删除页面元素是一种常见的交互方式,尤其在表单设计中,这种功能的实现能够极大地提升用户体验。使用jQuery库可以方便地实现这些功能,因为它提供了丰富的选择器和方法来操作DOM元素。...

    jquery合并表格行记录

    4. **合并单元格**:这通常涉及到修改DOM结构,例如,将当前行的某些单元格内容添加到前一行的对应单元格中,然后删除当前行。 5. **处理特殊情况**:在合并过程中,需要考虑边界条件,比如第一行不能与前一行比较...

    javascript动态添加表格数据行

    在JavaScript编程中,动态添加表格数据行是一种常见的需求,特别是在构建交互式的Web应用程序时。这个功能允许用户在不刷新整个页面的情况下添加新的记录,提高了用户体验。在这个例子中,我们将探讨如何利用...

    js表格操作,DOM实现数据动态增删查改

    本话题主要探讨如何利用原生JavaScript和DOM来实现数据表格中的动态增删查改功能,这对于前端开发来说是一项基本且重要的技能。 1. **创建数据表格** - 使用`&lt;table&gt;`元素创建表格结构,包括`&lt;thead&gt;`定义表头,`...

    asp.net可以动态删除表格记录的数据显示

    在ASP.NET中,动态删除表格记录的数据显示是一个常见的需求,特别是在构建数据驱动的Web应用程序时。这个过程涉及到前端用户界面的交互以及后端数据库的管理。以下是对这一知识点的详细阐述: 1. **HTML和ASP.NET...

    JQuery动态添加和删除表格行的方法

    下面详细阐述了如何使用JQuery来动态地添加和删除表格中的行。 1. 动态添加表格行的基本思路 在进行动态添加行操作时,我们通常先准备一个表格行的模板。这个模板是一个隐藏的元素,它具有所需的所有单元格元素,...

    vue+elementUI实现动态表格合并单元格.zip

    - 增加行通常涉及向表格数据数组中添加新对象,然后重新渲染表格。Vue 的数组变更检测可以处理这种情况,只要数组的方法(如 `push`、`splice`)被正确使用。 - 删除行则需要移除数组中的某个对象,同样触发视图...

    动态添加,删除 gridview 行

    本篇文章将深入探讨如何在GridView中实现动态添加和删除行,以及如何在用户保存时批量保存数据。 ### GridView简介 GridView是ASP.NET中的一个服务器控件,用于显示来自数据源(如数据库、XML或数组)的数据。默认...

    基于JavaScript实现动态添加删除表格的行

    这种动态操作表格行的方法在Web应用中十分实用,例如在管理界面中,用户可以方便地添加或删除记录。同时,这种方法也适用于任何需要动态调整表格内容的场景,只需根据实际情况修改表格结构和数据即可。通过学习和...

    动态建立TabWidget表格,自定义Combox和spinBox,添加删除菜单

    总结,动态建立`TabWidget`表格,自定义`Combox`和`spinBox`,并实现添加删除功能是QT编程中的一种高级技巧,它结合了UI设计、数据管理以及用户交互。通过学习和实践这个示例,开发者可以提高其在QT平台上的应用开发...

    C#删除表格中指定记录

    在C#编程中,删除表格中的指定记录是一个常见...总之,C#提供了多种方式来删除表格中的指定记录,包括传统的ADO.NET和现代的ORM框架如Entity Framework。理解并熟练掌握这些方法,将有助于你更好地处理数据库操作任务。

    C# 读写,删除,更新Excel表格记录

    "C# 读写、删除、更新Excel表格记录" 通过本文,我们将学习如何使用 C# 语言来读写、删除、更新 Excel 表格记录。我们将使用 OleDb 连接Excel 文件,并使用 Microsoft.Office.Interop.Excel 名字空间来实现删除记录...

    jQuery自定义添加删除表格行内容特效.zip

    本项目“jQuery自定义添加删除表格行内容特效”是基于jQuery实现的一种交互式功能,它允许用户动态地在表格中添加和删除行,大大提升了用户体验。下面将详细介绍这一功能的实现原理和关键代码。 首先,我们需要理解...

Global site tag (gtag.js) - Google Analytics