<script language="javascript">
function Ba()
{
var name=document.getElementById("dv");
var c=name.lastChild.firstChild.firstChild.innerHTML;
alert(c);
}
</script>
 <body>
<table id="dv">
<thead>
<td>学期</td>
<td>姓名</td>
<td>班级</td>
</thead>
<tbody>
<tr>
<td>123</td>
<td>456</td>
<td>789</td>
</tr>
</tbody>
</table>
<input type="button" value="查看" onclick="Ba()">
 </body>为什么会报 无法获取未定义或 null 引用的属性“firstChild”

解决方案 »

  1.   

    alert(name.lastChild); 
    得到的结果是 #text,说明这是一个文本结点。
    删除table内部所有的回车后,得到正确的结果123
      

  2.   

    http://bbs.csdn.net/topics/390490181
      

  3.   

    申请web开发版版主,希望大家多多支持 
      

  4.   

    <script language="javascript">
        function Ba(){
            var name=document.getElementById("dv").getElementsByTagName("tr")[1].getElementsByTagName("td")[0];
            var c=name.innerHTML;
            alert(c);
        }
    </script>
    <table id="dv">
        <tr>
            <td>学期</td>
            <td>姓名</td>
            <td>班级</td>
        </tr>
        <tr>
            <td>123</td>
            <td>456</td>
            <td>789</td>
        </tr>
    </table>
    <input type="button" value="查看" onclick="Ba()">
      

  5.   

    var name=document.getElementById("dv");
    var c=name.lastChild.firstChild.firstChild.innerHTML;//ie9以下
     //c=name.lastChild.previousSibling.firstChild.nextSibling.firstChild.nextSibling.innerHTML; 非ie或ie9
    alert(c);
      

  6.   

    因为dom指针不仅可以指向元素,也可以指向文本节点。这里取不到你想要的节点是因为XML存在一个有争议的地方:空格。换行被认为是一个空格,意味着这是一个文本节点,所以name.lastChild取到的已经是文本节点了。在IE9和其他主流浏览器都存在这种情况,可改用jquery来操作dom,或先判断浏览器类型再执行不同的操作,或者根据节点的nodeType判断其是否文本节点,nodeType值为3表示其为文本节点。