为了账号安全,请及时绑定邮箱和手机立即绑定

鼠标移到不同行时背景色改变?

  var trs = document.getElementsByTagName("tr");

       for(var i=1;i<trs.length;i++){

           trs[i].onmouseover=function(){this.style.backgroundColor="#f2f2f2";};

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

       }     

上面的正常的代码,问:

1 如果将this.style....改为trs[i].style...为什么就没有效果了?


2  如果改成trs[i].setAttribute("onmouseover","changeColor()"); 


function changeColor(){


   this.style.backgroundColor="#f2f2f2";


}    也没有效果,为什么?


正在回答

1 回答

好的,这位同学,我先回答你的第一个问题,为什么是this而不是trs[i],因为我们在做鼠标经过事件的时候,当鼠标移到一个对象上时就会触发该事件。this是指当前的,当鼠标移到当前对象时,它的样式就发生了改变。第二个问题,这是setAttribute(name,value)的语法。name是要设置的属性名,而你这onmouseover是一个事件,概念上是有区别的。

望采纳。。。。

0 回复 有任何疑惑可以回复我~
#1

strawIce 提问者

this对象不是指当前对应的trs[i]对象吗?
2016-08-12 回复 有任何疑惑可以回复我~
#2

lukaM 回复 strawIce 提问者

我来说说我的理解希望可以帮到你,因为是将一个function赋给trs[i].onmouseover,你给function中设置trs[i],当它在执行状态时并不能找到trs[i]这个对象,而this这个执行时,它就会知道。
2016-08-16 回复 有任何疑惑可以回复我~
#3

strawIce 提问者 回复 lukaM

好的,谢谢
2016-08-16 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

鼠标移到不同行时背景色改变?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信