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

为什么新添加的没有鼠标已经过事件?为什么删除新添加的那一栏就全部删完了?

<!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(){

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

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

        {

            bgChange(tr[i]);    

        }

}

 

function bgChange(obj){

   obj.onmouseover=function(){

       obj.style.backgroundColor=" #f2f2f2";

   }

   obj.onmouseout=function(){

       obj.style.backgroundColor="#fff";

   }

}

    

    function Add(){

        var no = prompt("请输入学号:", "");

        var name = prompt("请输入姓名:","");

        if(no!=null&&name!=null&&no!=""&&name!="")

        {

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

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

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

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

            var newno = document.createTextNode(no);

            var newname = document.createTextNode(name);

            td1.appendChild(newno);

            td2.appendChild(newname);

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

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

            table.appendChild(tr);

            table.appendChild(td1);

            table.appendChild(td2);

            table.appendChild(del);

            window.onload = function(){

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

                for(var i=0; i<add_tr.length; i++)

                {

                    bgChange(add_tr[i]);    

                }

        }

        }

        else{

            alert("姓名和学号不能为空,请重新输入!");

            Add();

        }

    }

     

    function del(obj){

        var tr = obj.parentNode.parentNode;

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

  </tr>


  <tr>

<td>xh002</td>

<td>刘小芳</td>

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

  </tr>  


  </table>

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

 </body>

</html>



提问者:稻草人666 2018-07-26 21:00

个回答

  • 小胖_
    2018-08-03 13:49:20

    你应该在add()方法中调用bgChange(),新增加的才会有鼠标经过的事件。

    var tr = obj.parentNode.parentNode;

    这个就是找到tr这个元素节点赋值给tr

    tr.parentNode.removeChild(tr);

    tr的父节点就是table,removeChild(tr)就是在父节点下把tr整个节点删除

  • S_DRAGON
    2018-07-28 15:31:13

     tr.parentNode.removeChild(tr);

    因为删除的是tr的父节点的整个子节点