任务概述

实现动态添加,删除的表单功能

JS-动态表格(添加-删除)_输入框

对应的 h t m l html html代码如下

<!DOCTYPE html>
<head lang="en">
	<meta charset="UTF-8">
	<title>Window对象</title>
	<style>
		div{
			text-align:center;
			margin-top:50px;
		}
		table{
			margin:auto;
			width:500px;
			border:1px solid;
		}
		td,th{
			text-align:center;
			border:1px solid;
		}
		#tit{
			text-align:center;
		}
	</style>
</head>
<body>
	<div>
		<input type="text" id="id" placeholder="请输入编号">
		<input type="text" id="name" placeholder="请输入姓名">
		<input type="text" id="gender" placeholder="请输入性别">
		<input type="button" value="添加" id="btn_add">
	</div>
	<table>
		<p id="tit">学生信息表</p>
		<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="de(this);">删除</a></td>
		</tr>
		<tr>
			<td>2</td>
			<td>issue!</td>
			<td></td>
			<td><a href="javascript:void(0);" onclick="de(this);">删除</a></td>
		</tr>
	</table>
</body>
</html>

Ⅰ . 实 现 添 加 功 能 \color{Red}Ⅰ.实现添加功能 .

HTML元素通常是由元素节点和文本节点组成。

创建一个标题 (H1), 你必须创建 “H1” 元素和文本节点:

比如

var h=document.createElement("H1")
var t=document.createTextNode("Hello World");
h.appendChild(t);

所以我们的任务就清楚了

Ⅰ . 获 取 用 户 输 入 框 的 内 容 Ⅰ.获取用户输入框的内容 .

var id = document.getElementById("id").value;
var name = document.getElementById("name").value;
var gender = document.getElementById("gender").value;

Ⅱ . 创 建 一 个 t d 元 素 , 由 t d 节 点 和 文 本 节 点 组 成 Ⅱ.创建一个td元素,由td节点和文本节点组成 .td,td

var td_id = document.createElement("td");
var text_id = document.createTextNode(id);
td_id.appendChild(text_id);

Ⅲ . 再 创 建 t r 元 素 , 把 t d 假 如 到 t r , 再 把 t r 加 入 到 t a b l e Ⅲ.再创建tr元素,把td假如到tr,再把tr加入到table .tr,tdtr,trtable

说的这么绕,就是逐级加上去罢了

var tr = document.createElement("tr");
tr.appendChild(td_id);
var table = document.getElementsByTagName("table")[0];
table.appendChild(tr);

如此一来,添加的代码就显得十分简单


Ⅱ . 点 击 删 除 超 链 接 , 就 删 除 对 应 的 表 格 行 \color{Red}Ⅱ.点击删除超链接,就删除对应的表格行 .,

这个也简单,给超链接设置 o n c l i c k onclick onclick方法即可

但是函数怎么写能删除?

我们知道 r e m o v e C h i l d removeChild removeChild方法就是父亲移除儿子

所以只需要获取 t a b l e table table和对应的行 t r tr tr即可

function de(x)
{
	var table = x.parentNode.parentNode.parentNode;
	var tr = x.parentNode.parentNode;
	table.removeChild(tr);
}

完整代码

<!DOCTYPE html>
<head lang="en">
	<meta charset="UTF-8">
	<title>Window对象</title>
	<style>
		div{
			text-align:center;
			margin-top:50px;
		}
		table{
			margin:auto;
			width:500px;
			border:1px solid;
		}
		td,th{
			text-align:center;
			border:1px solid;
		}
		#tit{
			text-align:center;
		}
	</style>
</head>
<body>
	<div>
		<input type="text" id="id" placeholder="请输入编号">
		<input type="text" id="name" placeholder="请输入姓名">
		<input type="text" id="gender" placeholder="请输入性别">
		<input type="button" value="添加" id="btn_add">
	</div>
	<table>
		<p id="tit">学生信息表</p>
		<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="de(this);">删除</a></td>
		</tr>
		<tr>
			<td>2</td>
			<td>issue!</td>
			<td></td>
			<td><a href="javascript:void(0);" onclick="de(this);">删除</a></td>
		</tr>
	</table>
	<script>
		//# sourceURL=dynamicScript.js
			document.getElementById("btn_add").onclick = function()
			{
				var id = document.getElementById("id").value;
				var name = document.getElementById("name").value;
				var gender = document.getElementById("gender").value;

				var td_id = document.createElement("td");
				var text_id = document.createTextNode(id);
				td_id.appendChild(text_id);

				var td_name = document.createElement("td");
				var text_name = document.createTextNode(name);
				td_name.appendChild(text_name);

				var td_gender = document.createElement("td");
				var text_gender = document.createTextNode(gender);
				td_gender.appendChild(text_gender);

				var td_a = document.createElement("td");
				var ele_a = document.createElement("a");
				ele_a.setAttribute("href","javascript:void(0);");
				ele_a.setAttribute("onclick","de(this);");
				var text_a = document.createTextNode("删除");
				ele_a.appendChild(text_a);
				td_a.appendChild(ele_a);


				var tr = document.createElement("tr");
				tr.appendChild(td_id);
				tr.appendChild(td_name);
				tr.appendChild(td_gender);
				tr.appendChild(td_a);
				var table = document.getElementsByTagName("table")[0];
				table.appendChild(tr);
			}
			function de(x)
			{
				var table = x.parentNode.parentNode.parentNode;
				var tr = x.parentNode.parentNode;
				table.removeChild(tr);
			}
	</script>
</body>
</html>

! ! ! 但 是 这 样 不 是 太 麻 烦 了 吗 ! ! 又 长 又 臭 !!!但是这样不是太麻烦了吗!!又长又臭 !!!!!

实际上我们可以直接用 i n n e r H T M L innerHTML innerHTML方法给 t a b l e table table嵌入代码段

效果相同,哈,真好啊

	<script>
		//# sourceURL=dynamicScript.js
			document.getElementById("btn_add").onclick = function()
			{
				var id = document.getElementById("id").value;
				var name = document.getElementById("name").value;
				var gender = document.getElementById("gender").value;
				var table = document.getElementsByTagName("table")[0];
				table.innerHTML +="<tr>\n"+
				"			<td>"+id+"</td>\n"+
				"			<td>"+name+"</td>\n"+
				"			<td>"+gender+"</td>\n"+
				"			<td><a href=\"javascript:void(0);\" οnclick=\"de(this);\">删除</a></td>\n"+
				"		</tr>";
			}
			function de(x)
			{
				var table = x.parentNode.parentNode.parentNode;
				var tr = x.parentNode.parentNode;
				table.removeChild(tr);
			}
	</script>