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

var tbody=document.getElementById("table").lastChild; tbody显示未定义,求助

var tbody=document.getElementById("table").lastChild;  tbody显示未定义,求助http://img.mukewang.com/597958f30001d61708160203.jpg

提问者:风到这里就是粘 2017-07-27 11:12

个回答

  • X4tar
    2017-07-28 15:45:11
    已采纳

    根据浏览器的解释的顺序, 当它读到getElementById("table")的时候,还不知道有table这个东西. 

    所以你把script代码段放到table以后, getElementById.....这行随意放函数外面还是里面

  • 风到这里就是粘
    2017-07-28 11:51:53

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>制作一个表格,显示班级的学生信息</title>
    <script type="text/javascript">
    window.onload = function(){
    //鼠标移动改变背景,鼠标移到不同行上时背景色改为色值为 #f2f2f2,移开鼠标时则恢复为原背景色 #fff
    //提示:1.获取表格的行,getElementsByTagName 。2.使用for进行循环,为每行添加事件及背景颜色设置。
    var trs=document.getElementsByTagName("tr");
    for (var i = 0; i < trs.length; i++) {
    trs[i].onmouseover=function(){
    this.style.backgroundColor="pink";
    };
    trs[i].onmouseout=function(){
    this.style.backgroundColor="#fff";
    };
    }
    }
    
    // 编写一个函数,供添加按钮调用,动态在表格的最后一行添加一行;
    // 使用createElement()、innerHTML、appendChild()
    function addtr(){
    var stuNo=prompt("请输入学号:","");
    var name=prompt("请输入姓名:","");
    var newtr=document.createElement("tr");
    newtr.innerHTML='<td>'+stuNo+'</td>'+'<td>'+name+'</td>'+'<td>'+'<a href="javascript:deleteRow();" >删除</a>'+'</td>'; //innerHTML可以解析HTML标签
    var tbody=document.getElementById("table").lastChild;//浏览器在table标签下默认添加tbody节点,为什么放到addtr()外面不好使?
    tbody.appendChild(newtr);
    }
    //  使用removeChild()创建删除函数,删除当前行
    function deleteRow(){
    var tbody=document.getElementById("table").lastChild;
    tbody.removeChild(this.parentNode.parentNode);
    }
    </script>
    </head>
    <body>
    <table border="1" width="50%" id="table">
    <tr>
    <th>学号</th>
    <th>姓名</th>
    <th>操作</th>
    </tr>
    <tr>
    <td>xh001</td>
    <td>王小明</td>
    <td><a href="javascript:deleteRow();" >删除</a></td><!--在删除按钮上添加点击事件  -->
    </tr>
    <tr>
    <td>xh002</td>
    <td>刘小芳</td>
    <td><a href="javascript:deleteRow();" >删除</a></td><!--在删除按钮上添加点击事件  -->
    </tr>
    </table>
    <input type="button" value="添加一行" onclick="addtr()" /><!--在添加按钮上添加点击事件  -->
    </body>
    </html>


  • X4tar
    2017-07-28 11:13:22

    麻烦把完整代码贴出来

  • 风到这里就是粘
    2017-07-27 11:31:56

    把var tbody=document.getElementById("table").lastChild; 放在了addtr()里了好使了,这是为什么?