删除方法中的lastChild

来源:9-22 编程练习

EddieQu

2015-06-18 15:06

function deleteRow(obj){

         var tbody = document.getElementById('table').lastChild; //为什么这里要有lastChild?       

    var tr = obj.parentNode.parentNode;

tbody.removeChild(tr);

}


tr的父节点不应该就是table吗?如果要有table的孩子为什么是lastChild不是别的Child?

写回答 关注

2回答

  • 康振宁
    2015-06-18 18:33:01
    已采纳

    table的字节点结构是text和tbody,你可以用开发者工具进行查看

    really... 回复歪嘴的肖恩

    <head> <tr> <td>xh002</td> <td>刘小芳</td> <td> <a onclick="del(this)" href="javascript:;">删除</a> </td> </tr> </tbody> </table> 这是火狐浏览器firebug工具下的代码; 我想是不是隔了</tbody>这个标签,所以参考代码用tbody这个相对于tr外一层的标签来移除tr下的内容

    2016-01-19 12:08:50

    共 3 条回复 >

  • nika_0001
    2015-06-18 19:51:46

    由于你没给出html和其他js文件,我不知道你这么方法是干嘛的,不过看起来像是删除给定的td节点所在的tr节点。


    我重写了一段,你自己慢慢看吧。

    <table>
    
    <thead><tr><th>my table</th></tr></thead>
    
    <tbody>
    
    <tr><td>hello</td><td>world</td></tr>
    <tr><td>world</td><td>hell</td></tr>
    <tr><td>world</td><td>world</td></tr>
    
    </tbody>
    
    <tfoot><tr><th>table end</th></tr></tfoot>
    
    </table>
      
    <script type="text/javascript">
            //删除表格中含有‘hello'的行。
    	var foo = 'hello';
    	//获取文档中全部的td节点
    	var tds = document.getElementsByTagName('td');
            //对所有td节点的文字与foo比较,如果等于'hello'则删除所在行。
    	for(var i = 0; i < tds.length; i++){
    		if(tds[i].childNodes[0].nodeValue == foo)
    			delRow(tds[i]);
    	}
            //obj是一个td节点
    	function delRow (obj){
    	  obj.parentNode.parentNode.removeChild(obj.parentNode);  
    	}
    </script>



JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468194 学习 · 21891 问题

查看课程

相似问题