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

如果我增加一行,我的onmouseover在新的一行就会不好使,该怎么办呢?

<!DOCTYPE html>

<html>

 <head>

  <title> new document </title>  

  <meta charset="utf-8"/>   

  <script type="text/javascript"> 

  

 

    window.onload = function(){

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

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

    tr[i].onmouseover=function(){

    this.style.backgroundColor="#f2f2f2";

    }

    tr[i].onmouseout=function(){

    this.style.backgroundColor="#fff";

    }

    }

}

     

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

     function addClass(){

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

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

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

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

      td1.innerHTML=prompt("请输入学号");

      td2.innerHTML=prompt("请输入姓名");

      table.appendChild(tr);

      tr.appendChild(td1);

      tr.appendChild(td2);

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

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

      a.innerHTML="删除";

      a.setAttribute("onclick","del(this)")

      td3.appendChild(a);

      tr.appendChild(td3);

     }


   

     

     // 创建删除函数

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

  </tr>


  <tr>

<td>xh002</td>

<td>刘小芳</td>

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

  </tr>  


  </table>

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

 </body>

</html>


正在回答

3 回答

这个少了window.onload刚开始没这个效果噢 

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

事件委托

0 回复 有任何疑惑可以回复我~
//封装成函数
function changecolor(){
            var tr=document.getElementsByTagName("tr");
            for(var i=0;i<tr.length;i++){
                tr[i].onmouseover=function(){
                    this.style.backgroundColor="#f2f2f2";
                }
                tr[i].onmouseout=function(){
                    this.style.backgroundColor="#fff";
                }
            }
        }
        // 编写一个函数,供添加按钮调用,动态在表格的最后一行添加子节点;
        function addClass(){
            var table=document.getElementById("table");
            var tr=document.createElement("tr");
            var td1=document.createElement("td");
            var td2=document.createElement("td");
            td1.innerHTML=prompt("请输入学号");
            td2.innerHTML=prompt("请输入姓名");
            table.appendChild(tr);
            tr.appendChild(td1);
            tr.appendChild(td2);
            var td3=document.createElement("td");
            var a=document.createElement("a");
            a.innerHTML="删除";
            a.setAttribute("onclick","del(this)")
            td3.appendChild(a);
            tr.appendChild(td3);
            //添加行后调用
            changecolor();
        }
        // 创建删除函数
        function del(obj){
            var tr=obj.parentNode.parentNode;
            tr.parentNode.removeChild(tr);
            //删除行后再次调用
            changecolor()
        }
    </script>
</head>
<!--页面加载完成后调用-->
<body onload="changecolor()">

我这样弄是可以实现你要的效果 但不知道是不是最好的方法 你可以参考一下。

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

司徒幕课

但是这样感觉每添加一行新行,就要重新遍历一次整个table,感觉性能堪忧。觉得这肯定不会是最好的方案,但是我也是小白只能做到这种程度,不知道更好的了。
2018-05-26 回复 有任何疑惑可以回复我~
#2

司徒幕课 回复 fighting加油吧 提问者

看了,学习了。
2018-06-11 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

如果我增加一行,我的onmouseover在新的一行就会不好使,该怎么办呢?

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