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

来源:9-22 编程练习

qq_加菲喵_0

2016-06-27 16:02

// 鼠标移动改变背景,可以通过给每行绑定鼠标移上事件和鼠标移除事件来改变所在行背景色。
        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";
            }
        }
	 
	 }


写回答 关注

3回答

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

    tr[i].onmouseover = function(){

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

                  this.style.backgroundColor = "red";  

                }

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

    懂了没

    qq_加菲喵...

    懂了 十分感谢

    2016-07-18 09:55:57

    共 1 条回复 >

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

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

    GiveMe... 回复qq_加菲喵...

    循环中没有给断点,自己会自动循环完,你在事后再去调用这个里面的方法,这个i的值肯定不会是1,2,3了呀。因为此时,i已经循环完了,是i.length这个值了。

    2016-07-17 13:47:16

    共 6 条回复 >

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

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

JavaScript进阶篇

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

468060 学习 · 21891 问题

查看课程

相似问题