码迷,mamicode.com
首页 > 编程语言 > 详细

动态增加,删除表格行并按照表格列排序

时间:2015-04-16 21:51:58      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:动态增加表格行   动态删除表格行数据   表格排序   


    接着上一篇博文,解决上一篇博文最后遗留的瑕疵,同时,给表格列添加了排序功能。


    解决掉的问题

    1 乱码的问题

    2 删除方法更加简便,省去获取父节点id的代码

    3 点击第一行的add按钮后,下行table行变宽问题


<html>
	<head>
		<title>Table</title>
		<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
		<style>
			table thead tr th {
				text-align : center,
				font-weight : bold
			}
			
		</style>
	</head>
	<body>
		<table id="tb1" border="1">
			<thead>
				<tr>
					<th width="150px" onclick="sortTable()" style="cursor:pointer">First Name</th>
					<th width="150px">Last Name</th>
					<th width="130px"> </th>
				</tr>
			<thead>
			<tbody id="tb">
				<tr id="1st">
					<td width="150px"><input name="firstName" value="张" /></td>
					<td width="150px"><input name="firstName" value="三" ></td>
					<!-- 这里的两个input输入域和连接的 必须放置在一行,否则表格主体的第一行的两个按钮之间多一个空格-->
					<td width="130px"><input type="button" value="Add" onclick="add()"> <input type="button" value="Del" onclick="del(this)"></td>
				</tr>
			</tbody>
		</table>
	</body>
</html>
<script>
	function add() {
		// 创建table 行标签tr
		var trObj = document.createElement("tr");
		// 设置行内容
		trObj.innerHTML = "<td width='150px'><input name='firstName'/></td><td width='150px'>"
			+ "<input name='lastName'/></td><td width='130px'><input type='button' value='Add' onclick='add()'> "
			+ "<input type='button' value='Del' onclick='del(this)'></td>";
		// 将行内容添加到表格中
		document.getElementById("tb").appendChild(trObj);
	}

	function del(obj) {
		// 直接删除当前对象的父节点的父节点
		document.getElementById("tb").removeChild(obj.parentNode.parentNode);
	}
	
	function compareTRs(oTR1, oTR2) {
		// 获取行中的需要比较的firstName列的值
		var sValue1 = oTR1.firstElementChild.firstElementChild.value;
		var sValue2 = oTR2.firstElementChild.firstElementChild.value;
		// 进行比较
		return sValue1.localeCompare(sValue2);
	}
	
	function sortTable(){
		// 获取表格
		var oTable = document.getElementById("tb1");
		// 获取表格中tBody主体域
		var oTBody = oTable.tBodies[0];
		// 获取oTBody域中行集合
		var colDataRows = oTBody.rows;
		// 新建行数组,用于存放行内容
		var aTRs = new Array;
		
		// 将oTBody中的行内容添加到aTRs中
		for (var i=0; i < colDataRows.length; i++) {
			aTRs[i] = colDataRows[i];
		}
		
		// 若oTable的sortCol 属性为空,对数组进行反转,否则进行排序
		if (oTable.sortCol) {
			aTRs.reverse();
		} else {
			aTRs.sort(compareTRs);
		}

		// 创建代码片段,存放排序后的行数据
		var oFragment = document.createDocumentFragment();
		for (var i=0; i < aTRs.length; i++) {
			oFragment.appendChild(aTRs[i]);
		}

		// 将存放有排序后行数据的代码片段添加到表格主体oTBody上
		oTBody.appendChild(oFragment);
		
		// 设置排序标识
		oTable.sortCol = true;
	}
</script> 


动态增加,删除表格行并按照表格列排序

标签:动态增加表格行   动态删除表格行数据   表格排序   

原文地址:http://blog.csdn.net/magi1201/article/details/45070039

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!