<!--这是我最后修改完成后可以正常运行的代码,虽然代码可以正常运行了,但我还是有个疑惑,就是不论是插入表格行"tr"还是删除表格行"tr",都要将"table"的子节点作为父节点进行操作才能正常运行,可从HTML代码中来看,"table"不就是"tr"的父节点吗?难道中间还隐藏着什么节点,既是"tr"的父节点,又是"table"的子节点?--> <!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(){ Highlight(); } // 鼠标移动改变背景,可以通过给每行绑定鼠标移上事件和鼠标移除事件来改变所在行背景色。 function Highlight(){ var tbody = document.getElementById("table").lastChild; var row = tbody.getElementsByTagName("tr"); for(var i=1;i<row.length;i++){ row[i].onmouseover = function(){ this.style.backgroundColor ="#3fc"; } row[i].onmouseout = function(){ this.style.backgroundColor ="#fff"; } } } // 编写一个函数,供添加按钮调用,动态在表格的最后一行添加子节点; function add(){ var newNode = document.createElement("tr"); var child1 = document.createElement("td"); var child2 = document.createElement("td"); var child3 = document.createElement("td"); child1.innerHTML = "<input />"; child2.innerHTML = "<input />"; child3.innerHTML = "<a href='javascript:;' onclick='del(this)'>删除</a>"; newNode.appendChild(child1); newNode.appendChild(child2); newNode.appendChild(child3); document.getElementById("table").lastChild.appendChild(newNode); Highlight(); } // 创建删除函数 function del(obj){ var fatherNode = document.getElementById("table").lastChild; fatherNode.removeChild(obj.parentNode.parentNode); } </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="del(this)" >删除</a></td> <!--在删除按钮上添加点击事件 --> </tr> <tr> <td>xh002</td> <td>刘小芳</td> <td><a href="javascript:;" onclick="del(this)" >删除</a></td> <!--在删除按钮上添加点击事件 --> </tr> </table> <input type="button" value="添加一行" onclick="add()" /> <!--在添加按钮上添加点击事件 --> </body> </html>
“.lastChild”都是根据答案后加的,结果加完之后就能正常运行了,问题肯定出在“看不见的节点”上。