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

highlight 函数里面的第一条写成这样,var tbody=document.getElementById("table"); 为什么仍然可以添加行,但是删除按钮不管用了???

<!DOCTYPE html>

<html>

 <head>

  <title> new document </title>  

  <meta http-equiv="Content-Type" content="text/html; charset=gbk"/>   

  <script type="text/javascript"> 

  

      window.onload = function(){

         Highlight();         

     // 鼠标移动改变背景,可以通过给每行绑定鼠标移上事件和鼠标移除事件来改变所在行背景色。 

     }

     function Highlight(){

         var tbody=document.getElementById("table").lastChild;   //就这里

        var 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";

             }

             

         }

         

         

     }

      // 编写一个函数,供添加按钮调用,动态在表格的最后一行添加子节点;

    function addone(){

        var tbody=document.getElementById("table");

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

        

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

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

        tr.appendChild(td);

        

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

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

        tr.appendChild(td);

        

        var 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);

}

     

     // 创建删除函数

     



  </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>

</html>


正在回答

2 回答

如果在windows下,你按F12打开浏览器的调试工具,看看table这个元素的结构,会发现table中有一个tbody元素作为唯一的子元素,展开tbody,才是tr元素,(这和HTML中写的内容直观感觉不一样)。

因此在你代码中的变量tbody获取的是table元素而不是tbody元素,由于你没有写出删除函数,所以不知道你如何获取待删除元素的,只要能获取正确元素,就可以删除。

不过最好还是在tbody中添加行tr和删除行tr,这样使得Javascript代码中的添加的元素和DOM结构保持一致。

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

新加的行不在tbody里面

将原来的tbody.appendChild(tr);改为下面的代码,新加的行就可以被删除了

tbody.children[0].appendChild(tr);

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

举报

0/150
提交
取消

highlight 函数里面的第一条写成这样,var tbody=document.getElementById("table"); 为什么仍然可以添加行,但是删除按钮不管用了???

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