事件委托解決問題
因?yàn)橐壎ㄊ录?,如果為所有tr的a綁定一個(gè)事件去刪除的話,節(jié)點(diǎn)一多影響效率不說,在后面點(diǎn)擊按鈕添加的時(shí)候,后添加的這些節(jié)點(diǎn)還沒辦法刪除,這就非常惱火了,于是用事件委托,完美的可以解決上述兩個(gè)問題,而且簡單!
<!DOCTYPE?html>
<html>
?<head>
??<title>?new?document?</title>??
??<meta?http-equiv="Content-Type"?content="text/html;?charset=gbk"/>???
??<script?type="text/javascript">?
??
??????window.onload?=?function(){
??????????????????
?????//?鼠標(biāo)移動改變背景,可以通過給每行綁定鼠標(biāo)移上事件和鼠標(biāo)移除事件來改變所在行背景色。
????????const?table=document.querySelector('table');
????????const?tbody=document.querySelector('tbody');
????????table.onmouseover=function(e){
????????????if(e.target.parentNode.nodeName==='TR'){
????????????????e.target.parentNode.style.backgroundColor="#f2f2f2";
????????????}
????????}
????????table.onmouseout=function(e){
????????????if(e.target.parentNode.nodeName==='TR'){
????????????????e.target.parentNode.style.backgroundColor="#fff";
????????????}
????????}
????????delStu(tbody);
?????}
?????
??????//?編寫一個(gè)函數(shù),供添加按鈕調(diào)用,動態(tài)在表格的最后一行添加子節(jié)點(diǎn);
?????function?addStu(number,name){
????????const?obj={
????????????number,
????????????name,
????????????*[Symbol.iterator](){
????????????????yield?*?Object.values(this);?
????????????}
????????};
????????const?tr=document.createElement("tr");
????????for(const?value?of?obj){
????????????const?td=document.createElement("td");
????????????td.innerText=value;
????????????tr.appendChild(td);
????????}
????????const?td=document.createElement("td");
????????const?a=document.createElement("a");
????????a.setAttribute("href","javascript:;");
????????a.innerText="刪除";
????????td.append(a);
????????tr.append(td);
????????document.querySelector("tbody").appendChild(tr);
?????}
?????//?創(chuàng)建刪除函數(shù)
?????function?delStu(tbody){
????????tbody.onclick=function(e){
????????????if(e.target.nodeName==='A'){
????????????????const?{path:[a,b,c]}=e;
????????????????tbody.removeChild(c);
????????????}
????????}
????}
??</script>?
?</head>?
?<body>?
???????<table?border="1"?width="50%"?id="table">
???????<tr>
????????<th>學(xué)號</th>
????????<th>姓名</th>
????????<th>操作</th>
???????</tr>??
???????<tr>
????????<td>xh001</td>
????????<td>王小明</td>
????????<td><a?href="javascript:;"?>刪除</a></td>???<!--在刪除按鈕上添加點(diǎn)擊事件??-->
???????</tr>
???????<tr>
????????<td>xh002</td>
????????<td>劉小芳</td>
????????<td><a?href="javascript:;">刪除</a></td>???<!--在刪除按鈕上添加點(diǎn)擊事件??-->
???????</tr>??
???????</table>
???????<input?type="button"?value="添加一行"?onclick="addStu(1,'chn')"/>???<!--在添加按鈕上添加點(diǎn)擊事件??-->
?</body>
</html>
2021-08-19
真無語了,來這裝什么東西