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

来源:9-22 编程练习

fighting加油吧

2018-05-24 08:20

<!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回答

  • limjh
    2018-07-27 22:49:31

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

  • 有一个昵称
    2018-06-11 12:05:24

    事件委托

  • 慕移动4708697
    2018-05-24 15:35:55
    //封装成函数
    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()">

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

    司徒幕课 回复fighti...

    看了,学习了。

    2018-06-11 16:55:39

    共 3 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468061 学习 · 21891 问题

查看课程

相似问题