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

无法删除或者添加?????

<!DOCTYPE html>

<html>

 <head>

  <title> new document </title>  

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

  <script type="text/javascript"> 

  

    window.onload = function(){

                  

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

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

        for(i=0;i<tr.length;i++){

            tr[i].onmouseover =  function(){

                this.style.backgroundColor = "#f2f2f2";

            }

            tr[i].onmouseout = function(){

                this.style.backgroundColor = "#fff";

            }    

        }

   }

     

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

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

    var num = 2;

    function createTr(){

      num++;

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

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

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

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

      td01.innerHTML = "xh00"+num;

      td02.innerHTML = "XXXX"+num;

      td03.innerHTML = '<a href="javascript:;" onclick="del()">删除</a>';

      table.appendChild(tr);

      tr.appendChild(td01);

      tr.appendChild(td02);

      tr.appendChild(td03);

    }   

     

     // 创建删除函数

    function del(){

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

      table.removeChild(table.childNodes[tr.length-1]);

    }

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

     </tr>


     <tr>

    <td>xh002</td>

    <td>刘小芳</td>

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

     </tr>  


     </table>

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

 </body>

</html>


提问者:沐翊 2019-11-04 13:21

个回答

  • 晓之蛇
    2019-11-08 10:33:02

    删除函数需要传入参数,定位删除的是哪一行:

    1. 触发事件中onclick="del()"改为onclick="del(this)"

    2. del方法

     function del(obj){      
         table = obj.parentNode.parentNode.parentNode; //定位到table节点     
         var tr = obj.parentNode.parentNode; //定位到与a标签在同一行的tr节点      
         table.removeChild(tr);    
     }


  • 晓之蛇
    2019-11-08 10:16:54

    无法添加问题的解决方案:把整个script代码放到</body>标签后面