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

为啥1行2不行呢

1:

     /* window.onload = function(){

        var hang=document.getElementsByTagName('tr');

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

           bdc(hang[i]);

            }

        }

     function bdc(can){

         can.onmouseover=function(){

             can.style.backgroundColor="#f2f2f2";

         }

         can.onmouseout=function(){

             can.style.backgroundColor="#fff";

         }

     }*/

2:     

    window.onload = function(){

        var hang=document.getElementsByTagName('tr');

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

            hang[i].onmouseover=function(){

                hang[i].style.backgroundColor="#f2f2f2";

            }

            hang[i].onmouseout=function(){

                hang[i].style.backgroundColor="#fff";

            }

        }

    }


提问者:山岳之王 2016-02-25 10:29

个回答

  • 白瑞爷
    2016-02-25 16:12:41
    已采纳

    2改成

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

                hang[i].onmouseover=function(){

                    this.style.backgroundColor="#f2f2f2";

                }

                hang[i].onmouseout=function(){

                    this.style.backgroundColor="#fff";

                }

    }

    就好了呢~

    因为在你嵌套的函数里面并不知道hang[i]是谁啊~

    作用域的问题

  • 爱学习要努力
    2016-02-25 18:08:51

    如楼上所言改成this试试。1的函数里带参数