<!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(){ hightLight() } // 鼠标移动改变背景,可以通过给每行绑定鼠标移上事件和鼠标移除事件来改变所在行背景色。 function hightLight(){ var trs = document.getElementsByTagName("tr"); for(var i=0;i<trs.length;i++){ trs[i].onmouseover=function(){ this.style.backgroundColor="#f2f2f2"; } trs[i].onmouseout=function(){ this.style.backgroundColor="#fff"; } } } // 创建删除函数 function deleteRow(obj){ var tbody=document.getElementById("table").lastChild; var tr=obj.parentNode.parentNode; tbody.removeChild(tr); } // 编写一个函数,供添加按钮调用,动态在表格的最后一行添加子节点; function addRow(obj){ var tbody=document.getElementById("table"); var tr = document.createElement("tr"); var tnum = document.createElement("td"); tnum.innerHTML="<input type='text'/>"; tr.appendChild(tnum); var tname = document.createElement("td"); tname.innerHTML="<input type='text'/>"; tr.appendChild(tname); var tdel = document.createElement("td"); tdel.innerHTML="<a href='javascript:;' onclick='deleteRow(this)'>删除</a>"; tr.appendChild(tdel); tbody.appendChild(tr); hightLight(); } </script> </head> <body> <table border="1" width="50%" id="table"> <tr> <th>学号</th> <th>姓名</th> <th>操作</th> </tr> <tr> <td>xh001</td> <td>王小明</td> <td><a href="javascript:;" onclick="deleteRow(this)" >删除</a></td> <!--在删除按钮上添加点击事件 --> </tr> <tr> <td>xh002</td> <td>刘小芳</td> <td><a href="javascript:;" onclick="deleteRow(this)">删除</a></td> <!--在删除按钮上添加点击事件 --> </tr> </table> <input type="button" value="添加一行" onclick="addRow()" /> <!--在添加按钮上添加点击事件 --> </body> </html>
26行 var tbody=document.getElementById("table").lastChild;
33行 var tbody=document.getElementById("table");????
22行的有lastChild,33行没有,所以层级都不同,所以删不掉,让要层级对了就行了。
所以就在33行后面添加.lastChild;
同样问题,为什么
我也是刚做完这个编程练习,做了好几遍了,正在理解中,你的问题就是addRow(obj)的方法中,第一行获取table的id,后面加一个.lastChild,就可以了。