问答详情
源自:9-22 编程练习

删除方法中的lastChild

function deleteRow(obj){

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

    var tr = obj.parentNode.parentNode;

tbody.removeChild(tr);

}


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

提问者:EddieQu 2015-06-18 15:06

个回答

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

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

  • 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>