为了账号安全,请及时绑定邮箱和手机立即绑定

var tbody=document.getElementsById('table').lastChild;当换成getElementsByTagName("table")是为什么无法运行呢?这两句代码都不是指代都是table这个元素节点吗?


   window.onload=function(){

     Highlight();

 }


   function addOne(obj){

    var tbody=document.getElementById('table').lastChild;

    var tr=document.createElement('tr');

    var td=document.createElement("td");

    tr.appendChild(td);


    td=document.createElement("td");

    td.innerHTML="<input type='text' />";

    tr.appendChild(td);


    td=document.createElement("td");

    td.innerHTML="<a href='javascript:;' onclick='deleteRow(this)'>删除</a>";

    tr.appendChild(td);


    tbody.appendChild(tr);

    Highlight();

   }


   function deleteRow(obj){

    var tbody=document.getElementById('table').lastChild;

    var tr=obj.parentNode.parentNode;

    tbody.removeChild(tr);

   }

   function Highlight(){

    var tbody=document.getElementById('table').lastChild;

    trs=tbody.getElementsByTagName('tr');

    for(var i=1;i<trs.length;i++){

       trs[i].onmouseover=function(){

        this.style.backgroundColor="#f2f2f2";

       }

       trs[i].onmouseout=function(){

        this.style.backgroundColor="#fff";

       }

    }


   }

</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:;" onclick="deleteRow(this)">删除</a></td><!--在删除按钮上添加点击事件  -->

</tr>


<tr>

      <td>xh002</td>

      <td>刘小芳</td>

      <td><a href="javascript:;" onclick="deleteRow(this)">删除</a></td>  <!--在删除按钮上添加点击事件-->

</tr>


</table>

<input type="button" value="添加一行" onclick="addOne()"/> <!--在添加按钮上添加点击事件 -->

</body>


正在回答

2 回答

这样的,table下面其实和html一样会有一些thead类似的节点,不过现在是可以不用去写的,而我们需要用到的是tbody,注意了,如果你测试的时候用浏览器看源代码就会发现浏览器自动会补上tbody,换句话讲在table节点下还隐藏了一些不可见的东西,而tbody放在了最后,我们需要用到是tbody,所以需要用.lastChild去找到这个点(个人理解,不喜勿喷



1 回复 有任何疑惑可以回复我~

getElementsByTagName获取的是一个数组,换成

getElementsByTagName("table")[0]试试


1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

var tbody=document.getElementsById('table').lastChild;当换成getElementsByTagName("table")是为什么无法运行呢?这两句代码都不是指代都是table这个元素节点吗?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信