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

变色为什么要嵌套才行了,直接写没效果呢

      window.onload = function(){
      var tr = document.getElementsByTagName("tr");

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

              bgChange(tr[i]);

          }

   

  }

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

     function bgChange(a) {

         a.onmouseover=function()

         {

         a.style.backgroundColor="#f2f2f2";

         }

        a.onmouseout=function()

         {

         a.style.backgroundColor="#fff";

         }

 }


    

提问者:whh168 2015-02-10 10:14

个回答

  • sixGod
    2015-02-11 11:01:22

    你这样写就可以了

    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";

                 }

      }


  • sixGod
    2015-02-11 10:47:01

    问题出在onmouseover=function(),这样写就相当于当onmouseover时,执行下function()里的代码,并不是给tr[i]的事件绑定方法

    你试下直接在里面输出i,发现无论你移动到哪一条,i的值都不会变

  • whh168
    2015-02-10 11:46:40

    window.onload = function(){
          var tr = document.getElementsByTagName("tr");

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

               tr[i].onmouseover=function()

             {

             a.style.backgroundColor="#f2f2f2";

             }
             tr[i].onmouseout=function()

             {

             a.style.backgroundColor="#fff";

             }

        }
     

      }

     

  • sixGod
    2015-02-10 11:26:50

    应该是可以的,你直接写没有效果,可能是你定错了,可以把你说的没有效果的代码发出来看看