deleteRow(obj)函數,問題
function deleteRow(obj){
? ? ? ? var tbody = document.getElementById('table').lastChild; ? ?
? ? ? ? var tr = obj.parentNode.parentNode;
? ? tbody.removeChild(tr); ? ?
? ? ?}
? ? ? ? var tbody = document.getElementById('table').lastChild; ? ?修改為? ? ? ? var tbody = document.getElementById('table'); ?原有的兩行不能刪除,為什么??
2016-07-07
是的,樓上的同學正解。表的結構應該是table->tbody->tr->td這樣的順序,細節大概是這樣,每個表有兩個兒子節點,大兒子是表頭,小兒子是tbody(可惜很重要很關鍵起承上啟下作用的小兒子tbody在老師的講義里沒提,造成了我們做題時的困惑),而我們看到的所有行也就是所有記錄都是tbody生的兒子,也就是table的孫子。當樓主你去掉lastChild時,變量tbody(注意這里老師起的變量名tbody其實已經說明了一切)就不是真正的tbody而是table了,只有父節點才能刪除子節點,table是行記錄的爺爺,怎么能刪掉孫子呢?所以這個lastChild(小兒子)屬性是絕對不能刪掉的
2016-07-01
明白了 ? 你看下你去掉.lastChild以后你去掉的是在<tbody>外面的行 你可以審查元素看下 ?<tbody>沒有顯示出來但是是table的下一級元素
2016-07-01
我也遇到了同樣的問題 ?我就覺得不應該寫.lastChild ? ? 可是答案里有 ?然后也不能刪除原來的兩行 ?希望樓下大牛解答
2016-06-30
首先,每一行都有一個刪除按鈕,所以只需要刪除本行即可,不需要刪除table元素的最后一個節點。然后看你的tbody現在指的是table元素最后一個tr節點,tr節點怎么能夠移除同是兄弟節點的tr元素呢?我把你的代碼編譯了一下,系統提示我移除的不是其子節點,具體愿意我也不太清楚,希望能有朋友幫忙解答一下。