JavaScript学习(六)——表格的动态添加与删除
基本页面
首先是去创建一个基本页面,上面有一个表格来展示信息
<div>
<input id="id" type="text" placeholder="请输入编号">
<input id="name" type="text" placeholder="请输入姓名">
<input id="sex" type="text" placeholder="请输入性别">
<input id="btn_add" type="button" value="添加">
</div>
<table id="table">
<tr>
<th>编号</th>
<th>姓名</th>
<th>性别</th>
<th>操作</th>
</tr>
<tr>
<td>1</td>
<td>张三</td>
<td>男</td>
<td><a href="javascript:void(0);" >删除</a> </td>
</tr>
<tr>
<td>2</td>
<td>李四</td>
<td>男</td>
<td><a href="javascript:void(0);" >删除</a> </td>
</tr>
<tr>
<td>3</td>
<td>王五</td>
<td>男</td>
<td><a href="javascript:void(0);" >删除</a> </td>
</tr>
</table>
动态删除
步骤:
- 首先点击删除,将会从table中删除点击的链接所在的tr
- 获取table节点
- 获取tr节点
- table节点删除tr节点
为a标签设置一个点击事件,a标签的父节点是td,td的父节点是tr,tr的父节点是table,所以函数将a标签传入,通过parentNode可以获取父节点
<td><a href="javascript:void(0);" onclick="del_tr(this)">删除</a> </td>
定义删除函数
function del_tr(obj) {
var table = obj.parentNode.parentNode.parentNode;
var tr = obj.parentNode.parentNode;
table.removeChild(tr);
}
点击删除,可以删除表格的信息
动态添加
接下来实现如何动态添加信息
步骤
- 添加按钮增加点击事件
- 获取需要添加的属性
- 分别创建属性的td标签
- 在td标签中添加需要展示的属性,操作的td标签中要添加a标签
- 创建tr标签,把所有的td标签添加进来
- 往table标签中添加tr标签
首先给添加按钮增加点击事件,在add方法中添加之后的所有操作
var button = document.getElementById("btn_add");
button.setAttribute("onclick","add()");
function add(){
}
从输入框中获取到需要添加的属性
var id = document.getElementById("id").value;
var name = document.getElementById("name").value;
var sex = document.getElementById("sex").value;
将属性转换为节点,这样才能添加到DOM树中,创建td节点,td节点中添加展示的属性,其余两个td节点是一样的操作
var id_td = document.createElement("td");
var id_text = document.createTextNode(id);
id_td.appendChild(id_text);
第四列不仅仅是文字,还有一个a标签
var a_td = document.createElement("td");
var a = document.createElement("a");
var a_text = document.createTextNode("删除");
a.appendChild(a_text);
a.setAttribute("href", "javascript:void(0);");
a.setAttribute("onclick", "del_tr(this)");
a_td.appendChild(a);
创建tr节点,在tr节点中添加之前创建的所有td节点
var tr = document.createElement("tr");
tr.appendChild(id_td);
tr.appendChild(name_td);
tr.appendChild(sex_td);
tr.appendChild(a_td);
最后在table节点下添加tr节点
document.getElementById("table").append(tr);
点击添加按钮,添加成功
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
</style>
</head>
<body>
<div>
<input id="id" type="text" placeholder="请输入编号">
<input id="name" type="text" placeholder="请输入姓名">
<input id="sex" type="text" placeholder="请输入性别">
<input id="btn_add" type="button" value="添加">
</div>
<table id="table">
<tr>
<th>编号</th>
<th>姓名</th>
<th>性别</th>
<th>操作</th>
</tr>
<tr>
<td>1</td>
<td>张三</td>
<td>男</td>
<td><a href="javascript:void(0);" onclick="del_tr(this)">删除</a> </td>
</tr>
<tr>
<td>2</td>
<td>李四</td>
<td>男</td>
<td><a href="javascript:void(0);" onclick="del_tr(this)">删除</a> </td>
</tr>
<tr>
<td>3</td>
<td>王五</td>
<td>男</td>
<td><a href="javascript:void(0);" onclick="del_tr(this)">删除</a> </td>
</tr>
</table>
<script>
function del_tr(obj) {
var table = obj.parentNode.parentNode.parentNode;
var tr = obj.parentNode.parentNode;
table.removeChild(tr);
}
var button = document.getElementById("btn_add");
button.setAttribute("onclick","add()");
function add() {
var id = document.getElementById("id").value;
var name = document.getElementById("name").value;
var sex = document.getElementById("sex").value;
var id_td = document.createElement("td");
var id_text = document.createTextNode(id);
id_td.appendChild(id_text);
var name_td = document.createElement("td");
var name_text = document.createTextNode(name);
name_td.appendChild(name_text);
var sex_td = document.createElement("td");
var sex_text = document.createTextNode(sex);
sex_td.appendChild(sex_text);
var a_td = document.createElement("td");
var a = document.createElement("a");
var a_text = document.createTextNode("删除");
a.appendChild(a_text);
a.setAttribute("href", "javascript:void(0);");
a.setAttribute("onclick", "del_tr(this)");
a_td.appendChild(a);
var tr = document.createElement("tr");
tr.appendChild(id_td);
tr.appendChild(name_td);
tr.appendChild(sex_td);
tr.appendChild(a_td);
document.getElementById("table").append(tr);
}
</script>
</body>
</html>
也可以之间在table的innerHTML后面直接添加想要添加的标签
table.innerHTML+="<tr><td>" +id+
"</td><td>" + name +
"</td><td>" + sex+
"</td><td>" + "<a href=\"javascript:void(0);\" οnclick=\"del_tr(this)\">删除</a>" +
"</td></tr>";
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
</style>
</head>
<body>
<div>
<input id="id" type="text" placeholder="请输入编号">
<input id="name" type="text" placeholder="请输入姓名">
<input id="sex" type="text" placeholder="请输入性别">
<input id="btn_add" type="button" value="添加">
</div>
<table id="table">
<tr>
<th>编号</th>
<th>姓名</th>
<th>性别</th>
<th>操作</th>
</tr>
<tr>
<td>1</td>
<td>张三</td>
<td>男</td>
<td><a href="javascript:void(0);" onclick="del_tr(this)">删除</a> </td>
</tr>
<tr>
<td>2</td>
<td>李四</td>
<td>男</td>
<td><a href="javascript:void(0);" onclick="del_tr(this)">删除</a> </td>
</tr>
<tr>
<td>3</td>
<td>王五</td>
<td>男</td>
<td><a href="javascript:void(0);" onclick="del_tr(this)">删除</a> </td>
</tr>
</table>
<script>
function del_tr(obj) {
var table = obj.parentNode.parentNode.parentNode;
var tr = obj.parentNode.parentNode;
table.removeChild(tr);
}
var button = document.getElementById("btn_add");
button.setAttribute("onclick","add()");
function add() {
var id = document.getElementById("id").value;
var name = document.getElementById("name").value;
var sex = document.getElementById("sex").value;
var table = document.getElementById("table");
table.innerHTML+="<tr><td>" +id+
"</td><td>" + name +
"</td><td>" + sex+
"</td><td>" + "<a href=\"javascript:void(0);\" οnclick=\"del_tr(this)\">删除</a>" +
"</td></tr>";
}
</script>
</body>
</html>