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

为甚用this不能用tr[i],我的理解是this和tr[i]是同一个对象

// 鼠标移动改变背景,可以通过给每行绑定鼠标移上事件和鼠标移除事件来改变所在行背景色。
        var tr = document.getElementById("table").getElementsByTagName('tr');
       
		for(var i=0; i<tr.length; i++)
        { 
            tr[i].onmouseover = function(){
            //   tr[i].style.backgroundColor = "red";
              this.style.backgroundColor = "red";  
            }
            tr[i].onmouseout = function(){
               tr[i].style.backgroundColor="white";
            //   this.style.backgroundColor="white";
            }
        }
	 
	 }


提问者:qq_加菲喵_0 2016-06-27 16:02

个回答

  • 慕侠8271869
    2016-07-16 17:59:34
    已采纳

    tr[i].onmouseover = function(){

                //   tr[i].style.backgroundColor = "red";

                  this.style.backgroundColor = "red";  

                }

    这里面是一个函数的调用, 在函数里面tr[i]是没有被定义的,this是可以获取标签内的对象的

    懂了没

  • GiveMeGeek
    2016-06-30 12:28:31

    放在网页中编译一下可以发现,tr[i]没有被定义或者未被赋值。而this指的是table的tr子元素。所以二者不是同一个对象。

  • qq_加菲喵_0
    2016-06-27 16:03:20

    七八 和十一、十二行的代码