為什么在刪除的時候會出現 Uncaught TypeError: Cannot read property 'parentNode' of undefined
<!DOCTYPE html>
<html>
?<head>
? <title> new document </title>??
? <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>??
??
? <script type="text/javascript">?
??
? ? ? window.onload = function(){
? ? ? ? ?var tagname1? ?=? ? document.getElementsByTagName("tr")
? ? ?// 鼠標移動改變背景,可以通過給每行綁定鼠標移上事件和鼠標移除事件來改變所在行背景色。
? ? ? ? for(var i=0;i<tagname1.length;i++)
{
colorchange(tagname1[i]);
}
}
? ? ?function colorchange(obj){
? ? obj.onmouseover=function(){
? ? obj.style.backgroundColor = "#f2f2f2";
? ? }
? ? obj.onmouseout=function(){
? ? obj.style.backgroundColor = "#fff";
? ? }
}
? ? ?
? ? ? // 編寫一個函數,供添加按鈕調用,動態在表格的最后一行添加子節點;
? ? ?var num=2;
? ? ?function add(){
? ? ?
? ? ? ? var tr1 = document.createElement("tr");
? ? ? ? var xh? = document.createElement("td");
? ? ? ? var xm? = document.createElement("td");
? ? ? ? var cz? = document.createElement("td");
? ? ? ? xh.innerHTML = "xh00"+ ++num;
? ? ? ? xm.innerHTML = xh.innerHTML+"人";
? ? ? ? cz.innerHTML = "<a href = 'javascript:deletelast(this)'>刪除</a>"
? ? ? ? var tab = document.getElementById("table");
? ? ? ? tab.appendChild(tr1);
? ? ? ? tr1.appendChild(xh);
? ? ? ? tr1.appendChild(xm);
? ? ? ? tr1.appendChild(cz);
? ? ? ? var tagname2 = document.getElementsByTagName("tr");
? ? ? ? for(var i=0;i<tagname2.length;i++){
? ? ? ? colorchange(tagname2[i]);
? ? ? ? }
? ? ?}
? ?
? ? ?
? ? ?// 創建刪除函數
? ? ?function deletelast(obj){
? ? ? ? ?var table = document.getElementById('table').lastChild;
? ? ? ? ? ? var tr = obj.parentNode.parentNode;
? ? ? ? ? ? table.removeChild(tr);
? ? ?}
? </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:deletelast(this);" >刪除</a></td>? ?<!--在刪除按鈕上添加點擊事件? -->
? ?</tr>
? ?<tr>
<td>xh002</td>
<td>劉小芳</td>
<td><a href="javascript:deletelast(this);" >刪除</a></td>? ?<!--在刪除按鈕上添加點擊事件? -->
? ?</tr>??
? ?</table>
? ?<input type="button" value="添加一行" onclick="add()" />? ?<!--在添加按鈕上添加點擊事件? -->
?</body>
</html>
2018-10-06
function deletelast(obj){
? ? ? ? ?var table = document.getElementById('table').lastChild;
? ? ? ? ? ? var tr = obj.parentNode.parentNode;
? ? ? ? ? ? table.removeChild(tr);
? ? ?}
你的刪除函數里table指的是“table”標簽的最后一個子節點,實際上也是一個“tr"標簽,而removeChild是刪除子節點,你的table和tr是同級的tr標簽,所以會出錯