新加的行,鼠标移动为什么不会变色啊,查了好久?

来源:9-22 编程练习

WinXXP3952812

2016-11-22 18:04

<!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=1;i<tr.length;i++)

         {

             bgChange(tr[i]);

         }

     function bgChange(obj)

     {

        obj.onmouseover=function(){

            obj.style.backgroundColor="red";

        }

        obj.onmouseout=function(){

            obj.style.backgroundColor="#fff";

        } 

     }

}

     

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

      var num=2;

     function add()

     {  num++;

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

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

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

         td1.innerHTML="xh00"+num;

         td2.innerHTML="第"+num+"个学生";

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

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

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

         tab.appendChild(tr);

         tr.appendChild(td1);

         tr.appendChild(td2);

         tr.appendChild(td3);

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

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

         {

             bgChange(tr[i]);

         }

     }

     

     // 创建删除函数

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

  </tr>


  <tr>

<td>xh002</td>

<td>刘小芳</td>

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

  </tr>  


  </table>

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

 </body>

</html>


写回答 关注

2回答

  • WinXXP3952812
    2016-11-23 17:16:37

    啊啊谢谢我发现这个问题了


  • 老友丶
    2016-11-22 22:27:53

    <script type="text/javascript"> 

          function bgChange(obj)

         {

            obj.onmouseover=function(){

                obj.style.backgroundColor="red";

            }

            obj.onmouseout=function(){

                obj.style.backgroundColor="#fff";

            } 

         }

          window.onload = function(){

                      

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

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

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

             {

                 bgChange(tr[i]);

             }

    }

         

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

          var num=2;

         function add()

         {  num++;

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

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

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

             td1.innerHTML="xh00"+num;

             td2.innerHTML="第"+num+"个学生";

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

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

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

             tab.appendChild(tr);

             tr.appendChild(td1);

             tr.appendChild(td2);

             tr.appendChild(td3);

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

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

             {

                 bgChange(tr[i]);

             }

         }

         

         // 创建删除函数

         function xxo(obj)

         { 

             var tr=obj.parentNode.parentNode;

             tr.parentNode.removeChild(tr);

         }

         



      </script> 



    你在add()函数里面调用bgChange()方法,是不行的。因为bgChange函数处于window.onload函数里面

    解决办法:将bgChange函数上升为全局函数,这样子在add()函数里面就可以调用了,window.onload函数里面也可以调用了。

JavaScript进阶篇

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

468195 学习 · 21891 问题

查看课程

相似问题