赞
踩
Javascript
可以控制table
,动态的插入行和单元格。rows
保存着<tbody>
元素中行的HTMLCollection
。
语法:tableObject.insertRow(index)
该方法创建一个新的TableRow
对象,表示一个新的<tr>
标记,用于在表格中的指定位置插入一个新行,并返回这个新插入的行TableRow
,新行将被插入index
所在行之前。若index
等于表中的行数,则新行将被附加到表的末尾。如果表是空的,则新行将被插入到一个新的<tbody>
段,该段自身会被插入表中。若参数index
小于 0 或大于表中的行数,该方法将抛出代码为INDEX_SIZE_ERR
的DOMException
异常。
table.insertRow()
,默认添加到最后一行,统计行数:table.rows.length
cells
保存着<tr>
元素中单元格的HTMLCollectioin
集合;insertCell(pos)
向cells
集合的指定位置插入一个单元格,并返回引用;table.insertCell()
,默认添加到最后一列,还可以根据需要动态改变单元格的属性,统计列数:table.rows.item(0).cells.length
。
语法:table.deleteRow(index)
用来删除指定位置的行。
row.deleteCell(index)
用来/删除指定位置的单元格;
DOM方法:removeChild(node)
用来删除子节点(元素);
parentNode
用来获取节点(元素)的父节点。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>动态添加与删除表格行</title> </head> <body style="text-align: center;"> <button onclick="addRow()">添加一行表格</button> <button onclick="removeLastRow()">删除末行表格</button> <hr /> <table id='stu' align="center" width="300" cellpadding="5" border="1"> <caption> <font size="5">学生基本信息表</font> </caption> <tr> <th>学号</th> <th>姓名</th> <th>年龄</th> </tr> </table> <p id='recno'>记录数:0</p> <script> var no = 0; function addRow() { no++; var tab = document.getElementById('stu'); // 获取表格元素 var r = tab.insertRow(); // 插入一行 r.attributes.id = no; var c1 = r.insertCell(0); // 插入第一个单元格 var c2 = r.insertCell(1); // 插入第二个单元格 var c3 = r.insertCell(2); // 插入第三个单元格 c1.innerHTML = 'lzy' + no; c2.innerHTML = '学生' + no; c3.innerHTML = parseInt((Math.random() * 3) + 17); var recno = document.getElementById('recno'); recno.innerText = '记录数:' + (tab.rows.length - 1); } function removeLastRow() { if (no == 0) { alert('没有记录可删除!') return; } var tab = document.getElementById('stu'); // 获取表格元素 tab.deleteRow(no); no--; var recno = document.getElementById('recno'); recno.innerText = '记录数:' + (tab.rows.length - 1); } </script> </body> </html>
运行效果如下:
上述案例只能删除表格的末行,不能根据用户要求删除指定行,下面演示如何删除指定的表格行。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>动态添加与删除表格行</title> </head> <body style="text-align: center;"> <button onclick="addRow()">添加一行表格</button> <hr /> <table id='stu' align="center" width="300" cellpadding="5" border="1"> <caption> <font size="5">学生基本信息表</font> </caption> <tr> <th>学号</th> <th>姓名</th> <th>年龄</th> <th>操作</th> </tr> </table> <p id='recno'>记录数:0</p> <script> var no = 0; function addRow() { no++; var tab = document.getElementById('stu'); var r = tab.insertRow(); r.attributes.id = no; var c1 = r.insertCell(0); var c2 = r.insertCell(1); var c3 = r.insertCell(2); var c4 = r.insertCell(3); c1.innerHTML = 'lzy' + no; c2.innerHTML = '学生' + no; c3.innerHTML = parseInt((Math.random() * 3) + 17); c4.innerHTML = '<a href="#" οnclick="delRow(this);">删除</a>' var recno = document.getElementById('recno'); recno.innerText = '记录数:' + (tab.rows.length - 1); } function delRow(obj) { var tab = document.getElementById('stu'); var rowIndex = obj.parentNode.parentNode.rowIndex; tab.deleteRow(rowIndex); no--; var recno = document.getElementById('recno'); recno.innerText = '记录数:' + (tab.rows.length - 1); } </script> </body> </html>
运行效果如下:
var rowIndex = obj.parentNode.parentNode.rowIndex;
在delRow(obj)
方法里,参数obj
是单元格里的超链接,obj.parentNode
就是包含它的单元格,obj.parentNode.parentNode
就是包含它的单元格所在的表格行,obj.parentNode.parentNode.rowIndex
就是就是包含它的单元格所在的表格行的行索引。
一般删除某个东西时,要弹出一个消息框询问用户是否要删除。
运行效果如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。