JavaScript(五)——DOM案例

全选、删除、添加功能实现
动态排序
事件委托的应用

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>DOM案例</title>
		<style type="text/css">
			* {
				margin: 0;
				padding: 0;
			}
			table{
				position: static;
				margin: auto auto;
				width: 400px;
			}
			td{
				text-align: center;
			}
			.addBtn{
				margin-left: 49%;
			}
			#add{
				position: fixed;
				width: 300px;
				height: 100px;
				border: black 1px solid;
				margin-left:42%;
				margin-top: 10%;
				display: none;
			}
			#ok{
				position: relative;
				left: 25%;
			}
			#cancel{
				position: relative;
				left: 50%;
			}
		</style>
	</head>
	<body>
		<table border="1px black solid" cellspacing="5px" cellpadding="2px">
			<tr>
				<th>
					<input type="checkbox" id="selectAll" />全选
					
				</th>
				<th>
					序号
				</th>
				<th>
					姓名
				</th>
				<th>
					操作
				</th>
			</tr>
			<tr>
				<td>
					<input type="checkbox" name="select" />选定
				</td>
				<td name="idCode">
					1
				</td>
				<td>
					张三
				</td>
				<td>
					<button type="button" name="delete">删除</button>
				</td>
			</tr>
			<tr>
				<td>
					<input type="checkbox" name="select"/>选定
				</td>
				<td name="idCode">
					2
				</td>
				<td>
					李四
				</td>
				<td>
					<button type="button" name="delete">删除</button>
				</td>
			</tr>
		</table>
		<br>
		<button type="button" id="addBtn" class="addBtn">添加</button>
		<div id="add">
			序号<span id="code"></span><br>
			姓名<input type="text" id="addName"/><br><br>
			<button type="button" id="ok">确定</button>
			<button type="button" id="cancel">取消</button>
		</div>
		<script type="text/javascript">
			//全选
			let selectAll = document.getElementById("selectAll");
			let selects = document.getElementsByName("select");
			selectAll.addEventListener("click",()=>{
				for(let s of selects){
					s.checked=selectAll.checked;
				}
				console.log(selects.length);
			});
			
			//删除
			function reOrder(){
				let codes = document.getElementsByName("idCode");
				for(let i=1;i<=codes.length;i++){
					codes[i-1].innerHTML=i;
				}
			}
			function deleteFunc(btn){
				let tbody = btn.parentElement.parentElement.parentElement;
				tbody.removeChild(btn.parentElement.parentElement);
				reOrder();
			}
			//事件委托,在table上注册事件,当事件源是删除按钮时执行
			document.getElementsByTagName("table")[0].addEventListener("click",(e)=>{
				if(e.target.name=="delete"){
					deleteFunc(e.target);
				}
			});
			
			//添加
			let add = document.getElementById("add");
			let addBtn = document.getElementById("addBtn");
			let ok = document.getElementById("ok");
			let cancel = document.getElementById("cancel");
			let addName = document.getElementById("addName");
			function reset(){
				addName.value="";
			}
			function addFunc(){
				let newSelect = document.createElement("input");
				let newTd1 = document.createElement("td");
				let newTd2 = document.createElement("td");
				let newTd3 = document.createElement("td");
				let newTd4 = document.createElement("td");
				let newTr = document.createElement("tr");
				let newButton = document.createElement("button");
				
				newSelect.name="select";
				newSelect.type="checkbox";
				newTd1.appendChild(newSelect);
				newTd1.append(document.createTextNode("选定"));
				newTd2.innerText=selects.length+1;
				newTd2.setAttribute("name","idCode");
				newTd3.innerText=addName.value;
				newButton.type="button";
				newButton.name="delete";
				newButton.innerText="删除";
				newTd4.appendChild(newButton);
				newTr.appendChild(newTd1);
				newTr.appendChild(newTd2);
				newTr.appendChild(newTd3);
				newTr.appendChild(newTd4);
				
				let tbody = document.getElementsByTagName("table")[0].children[0];
				tbody.appendChild(newTr);
			}
			ok.addEventListener("click",()=>{
				addFunc();
				reset();
				add.style.display="none";
			})
			cancel.addEventListener("click",()=>{
				reset();
				add.style.display="none";
			})
			addBtn.addEventListener("click",()=>{
				let code = document.getElementById("code");
				code.innerHTML=selects.length+1;
				add.style.display="block";
			})
		</script>
	</body>
</html>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值