9-22编程练习:为什么不通过函数给onmouseover赋值就不能正常改变颜色?

来源:9-22 编程练习

qq_不能說的秘密_0

2016-01-02 01:32

方法一:  

window.onload = function(){
                 
     // 鼠标移动改变背景,可以通过给每行绑定鼠标移上事件和鼠标移除事件来改变所在行背景色。
        var tr = document.getElementsByTagName("tr");
        for(var i=0; i<tr.length; i++){

            tr[i].onmouseover=function(){
                tr[i].style.backgroundColor="#f2f2f2";
            }
            tr[i].onmouseout=function(){
                tr[i].style.backgroundColor="#fff";
            }
        }
   }
   方法二:

   window.onload = function(){
     // 鼠标移动改变背景,可以通过给每行绑定鼠标移上事件和鼠标移除事件来改变所在行背景色。
        var tr = document.getElementsByTagName("tr");
        for(var i=0; i<tr.length; i++){
           bgcChange(tr[i]);
        }
   }

   function bgcChange(obj)
     {
        obj.onmouseover=function(){
            obj.style.backgroundColor="#f2f2f2";
        }
        obj.onmouseout=function(){
            obj.style.backgroundColor="#fff";
        }
   }


方法一不能正常执行,鼠标指向后颜色不变;方法二可以正常改变背景颜色,这是什么原因?纠结在这问题上2小时了。。。。。


写回答 关注

2回答

  • 李晓健
    2016-01-02 11:11:28
    已采纳
        window.onload = function(){
            var tr = document.getElementsByTagName("tr");
            for(var i=0; i<tr.length; i++){
                tr[i].onmouseover=function(){
                    alert(i); //你在这里弹出一下 i 看看是不是你觉得应该出现的值;
                    //tr[i].style.backgroundColor="#f2f2f2";
                    //你可以这么写试试
                    this.style.backgroundColor="#f2f2f2";
                };
    //            //也可以这么试一下
    //            (function(i){
    //                tr[i].onmouseover=function(){
    //                    tr[i].style.backgroundColor="#f2f2f2";
    //                }
    //            }(i));
                
                //这个方法的改法同上
                tr[i].onmouseout=function(){
                    tr[i].style.backgroundColor="#fff";
                }
            }
        }

    你可以试着按照注释的来写写看,原因你可以去查一下闭包作用域相关的资料了解一下

    qq_不能說... 回复慕斯卡410...

    匿名函数,js里相当部分的函数都直接赋值的

    2016-01-05 12:57:03

    共 3 条回复 >

  • 吃瓜小夏
    2016-01-22 14:57:06

    晕乎乎

JavaScript进阶篇

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

468060 学习 · 21891 问题

查看课程

相似问题