js向table表格动态增加行,删除行经常被用到,一般用于数据的批量添加和批量删除,本案例采用原生的JavaScript来实现,css样式自己设计,效果如图。
下面是js实现表格动态增加行,删除行的html和js代码,直接复制过去就可以使用。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>作业-动态表格</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <style type="text/css"> #list tr th { background-color: #06F; } </style> </head> <body> <table id="list" border="1" align="center" width="500px"> <thead> <tr> <th> <input type="checkbox" id="all" onclick="checkAll(this)" /> </th> <th>编号</th> <th>姓名</th> <th>密码</th> <th>年龄</th> <th>地址</th> <th>操作</th> </tr> </thead> <tbody> </tbody> <tfoot> <tr> <td colspan="7"> <a href="javascript:void(0)" onclick="delSelect()">删除选择</a> </td> </tr> </tfoot> </table> <hr /> <form method="post" action="addUser.action"> <table border="1" align="center" width="300px"> <tr> <th>编号</th> <td> <input type="text" id="id" /> </td> </tr> <tr> <th>姓名 </th> <td> <input type="text" id="name" /> </td> </tr> <tr> <th>密码</th> <td> <input type="text" id="password" /> </td> </tr> <tr> <th>年龄</th> <td> <input type="text" id="age" /> </td> </tr> <tr> <th>住址</th> <td> <input type="text" id="address" /> </td> </tr> <tr> <td colspan="2" align="center"> <input type="reset" value="重置" /> <input type="button" value="添加" onclick="addItem()" /> </td> </tr> </table> </form> </body> <script type="text/javascript"> /* <tr> <td><input type="checkbox" name="sub"/></td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>删除</td> </tr> */ // 1. 添加一行 function addItem(){ //1.1 获取输入数据 var id = document.getElementById("id").value; var name = document.getElementById("name").value; var pwd = document.getElementById("password").value; var age = document.getElementById("age").value; var address = document.getElementById("address").value; //1.2 把输入数据添加到表格中: 创建新的一行、设置值、且添加! //1.2.1 创建节点 var tr = document.createElement("tr"); var td_cbx = document.createElement("td"); var td_id = document.createElement("td"); var td_name = document.createElement("td"); var td_pwd = document.createElement("td"); var td_age = document.createElement("td"); var td_address = document.createElement("td"); var td_op = document.createElement("td"); // 设置值 td_cbx.innerHTML = "<input type=\"checkbox\" name=\"sub\" />"; td_id.innerHTML = id; td_name.innerHTML = name; td_pwd.innerHTML = pwd; td_age.innerHTML = age; td_address.innerHTML = address; td_op.innerHTML = "<a href=\"#\" onclick=\"deleteOne(this)\">删除</a>"; //1.2.2 处理节点关系 tr.appendChild(td_cbx); tr.appendChild(td_id); tr.appendChild(td_name); tr.appendChild(td_pwd); tr.appendChild(td_age); tr.appendChild(td_address); tr.appendChild(td_op); //1.2.3 添加到tobody中 document.getElementsByTagName("tbody")[0].appendChild(tr); } //2. 删除一行 function deleteOne(obj_a){ /* //2.1 找到要删除的行 var deletRow = obj_a.parentNode.parentNode; //2.2 找到tbody, 删除上面的行 //a. 根据标签获取 //var tbody = document.getElementsByTagName("tbody")[0]; //b. 根据节点关系查找 var tbody = deletRow.parentNode; // 删除 tbody.removeChild(deletRow); */ // 超链接标签的父标签(td),父标签(tr),父标签(tbody) 删除一行即<tr>内的 obj_a.parentNode.parentNode.parentNode.removeChild(obj_a.parentNode.parentNode); } //3. 全选 function checkAll(obj){ // 获取父复选框 // var all = document.getElementById("all"); var all = obj; // 获取所有的自复选框 var sub = document.getElementsByName("sub"); // 遍历 for (var i=0;i<sub.length;i++){ sub[i].checked = all.checked; // 子复选框状态,与父复选框状态一致 } } //4. 删除选择 function delSelect(){ //4.1 获取toby var tbody = document.getElementsByTagName("tbody")[0]; //4.2 获取所有子复选框 var sub = document.getElementsByName("sub"); //4.3 迭代 for (var i=0;i<sub.length;i++){ if (sub[i].checked){ tbody.removeChild( sub[i].parentNode.parentNode ); i--; } } } </script> </html>