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

为什么必须要使用getElementById("table").lastChild

为什么必须要使用getElementById("table").lastChild,这里使用lastChild的结果为什么不是table的最后一个tr呢?

提问者:larrylarry 2016-10-05 17:08

个回答

  • 呦呦慕粉
    2017-05-28 11:16:42

    定义和用法

    <tbody> 标签表格主体(正文)。该标签用于组合 HTML 表格的主体内容。

    tbody 元素应该与 thead 和 tfoot 元素结合起来使用。

    thead 元素用于对 HTML 表格中的表头内容进行分组,而 tfoot 元素用于对 HTML 表格中的表注(页脚)内容进行分组。

    注释:如果您使用 thead、tfoot 以及 tbody 元素,您就必须使用全部的元素。它们的出现次序是:thead、tfoot、tbody,这样浏览器就可以在收到所有数据前呈现页脚了。您必须在 table 元素内部使用这些标签。


  • hans_2
    2016-10-08 16:50:19

    我是这样测试的,现实的结果很明白。

          window.onload = function(){
            var ta=document.getElementById("table").childNodes;
            // alert(ta.length) //提示为2.
            document.write(
            "ta[0].nodeType:" + ta[0].nodeType+
            "<br/> ta[0].nodeName" + ta[0].nodeName + 
            "<br/> ta[1].nodeType:" +ta[1].nodeType + 
            "<br/> ta[1].nodeName:"+ ta[1].nodeName
            );
            // alert(ta[1].childNodes.length)  //提示为6,也就是我们以为的table里的子节点数目,实际是在
                                               //table的childNodes[1].childNodes里
    	 }

    ta[0].nodeType:3
    ta[0].nodeName#text
    ta[1].nodeType:1
    ta[1].nodeName:TBODY

    这下就明白为什么要是使用  document.getElementById("table").lastChild  了,希望可以帮到你。

  • 慕粉1473141619
    2016-10-08 10:53:03

    用chrome的开发者工具发现table标签下多了一层tbody标签,猜测浏览器会给table标签里自动添加tbody标签,tr都是放在tbody里面,所以getElementById("table").lastChild指的应该是tbody标签,不过table的子标签只有一个tbody,按理说用firstChild应该也可以,但是实测却是不可以,感觉有点儿懵圈~


  • 用户1077694
    2016-10-05 18:45:32

    除了IE忽略空格等,其他浏览器都认为是其子节点,比如<p><span></span></p>,p的最后一个子节点是span;如果是<p><span></span>         </p>,就是nodeName为#text的文本节点。

  • 花和尚35
    2016-10-05 17:20:09

    应该是不是tr