移除函数求解,为什么用要给table节点加lastChild才能生效?

来源:9-22 编程练习

六月ovo

2017-01-19 11:54

为什么这里移除子节点的函数是这样的:

function removeChilds(obj){

    var tbody=document.getElementById("table").lastChild;  //注意这里,有个lastChild,我就是这里不明白,求解

    var tr=obj.parentNode.parentNode;

    tbody.removeChild(tr);

}

在这里,tbody的最后还加了个lastChild,可是要删除的tr行的父元素不就是<table>吗?这里加个lastChild是什么意思?


写回答 关注

3回答

  • qq_芷若初荨_uDHOW2
    2017-01-19 17:30:31
    已采纳

    table习惯上常常把标签<tbody></tbody> 省略,但是在dom中他默认有tbody这一层,所以获取的是<tbody></tbody>里面内容,其顺序为:thead、tfoot、tbody. lastChild节点是指其父节点的最后一个节点tbody

    你不懂的前端

    var tbody = document.getElementById('table').lastChild; 这段代码是tr的父节点tbody 那tr不是应该为tr=tbody.childnodes 可是为什么var tr = obj.parentNode.parentNode;理解不了 求解答 谢谢 或者说var tr = obj.parentNode.parentNode; 这该怎么理解

    2017-02-12 21:43:21

    共 2 条回复 >

  • 钱江风
    2017-06-03 23:35:46

    Table 对象集合

    集合描述

    cells[]    返回包含表格中所有单元格的一个数组。    

    rows[]    返回包含表格中所有行的一个数组。    

    tBodies[]    返回包含表格中所有 tbody 的一个数组。    

    所以var tbody = document.getElementById('table').lastChild;其实是cells层。

    参考http://www.w3school.com.cn/jsref/dom_obj_table.asp


  • 杯酒
    2017-01-19 16:52:03

    lastChild 属性返回指定节点的最后一个子节点,以 Node 对象。

    六月ovo 回复上好佳_1

    在DOM中默认是有tbody这一层的,但是在HTML文档中并没有写出来,如果HTML中要用tbody,则需要thead、tfoot和tbody三个一起使用,这个时候DOM中才会看到thead和tfoot。HTML中不使用这三个的结构,则在DOM中tr的外层默认是tbody。

    2017-02-07 23:50:28

    共 3 条回复 >

JavaScript进阶篇

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

468194 学习 · 21891 问题

查看课程

相似问题