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

为什么这么写提交上去表格直接就是红色?

    window.onload = function(){

        trlist=document.getElementsByTagName("tr");

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

         trlist[i].onmouseover=bgcChange(trlist[i]);

         trlist[i].onmouseout=function(){this.style.backgroundColor="#fff"}

        }

}

    function bgcChange(a){

        a.style.backgroundColor="red";

    }



提问者:林鸿伯3985306 2016-10-29 22:25

个回答

  • stone310
    2016-10-30 20:36:00
    已采纳

    如果直接这么写:

    trlist[i].onmouseover=bgcChange(trlist[i]);

    这里bgcChange是一个自执行函数,而并不是事件函数,因此一加载页面就会执行;

    但也不能这么写:

    trlist[i].onmouseover=function(){
        bgcChange(trlist[i]);   //改成:bgcChange(this); 
    }

    这么也i值为定数(i为trlist.length),因此要写成你的mouseout事件的格式,用this.

  • 慕粉547471488
    2016-10-30 08:45:52

    方便把全部代码贴出来吗


  • 慕粉547471488
    2016-10-29 22:53:57

    this就是代表trlist[i],然后this.style.backgroundColor=“red”就是直接给他们每一个都设置了颜色!

    function bgcChange(a){

            a.style.backgroundColor="red";

        }

    这个函数和

     trlist[i].onmouseout=function(){this.style.backgroundColor="#fff"}只要一个就好了

    你用了两种方法设置了颜色

  • 慕粉547471488
    2016-10-29 22:34:07

    因为window.onload意思就是页面一加载就运行!bgcChange(trlist[i]);调用了函数  function bgcChange(a)所以为红色