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

大佬们。为什么这样写背景颜色不会改变呢

   var row=document.getElementsByTagName("tr");   
     for(i=0;i<row.length;i++)
     {
         row[i].onmouseover=function(){
            row[i].style.backgroundColor="#f2f2f2";
            
         }
         row[i].onmouseout=function(){
            row[i] .style.backgroundColor="#fff"
         }
    }

提问者:qq_借个背包就出发_03588511 2018-05-21 10:53

个回答

  • 纸丶两面白
    2018-05-22 00:26:43
    已采纳

    这是一个闭包带来的问题,那什么是闭包,可以去看一个Bosn老师的课程7-1[JavaScript]理解闭包

    改成这样就行了:

       var row=document.getElementsByTagName("tr");   
         for(i=0;i<row.length;i++)
         {
             !function(i) {
                 row[i].onmouseover=function(){
                    row[i].style.backgroundColor="#f2f2f2";
                     
                 }
                 row[i].onmouseout=function(){
                    row[i] .style.backgroundColor="#fff"
                 } 
             }(i);
        }


  • 慕移动4708697
    2018-05-25 09:24:17

    var row =document.getElementsByTagName("tr");
    for(var i=0;i<row.length;i++){
            row[i].onmouseover=function () {
                this.style.backgroundColor="#f2f2f2";
            };
            row[i].onmouseout=function () {
               this.style.backgroundColor="#fff";
            }
    }