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

为什么不能直接用this呢

这里为什么不能直接用this

正在回答

5 回答

你的第一个和第二个this还是指的a元素,但是你的this.style.width以后的this就已经不是a元素,它已经和函数有了关系。你可以用console.log(this)把不同的this打印出来,你就知道this是不断在变化的,所以我们需要在一开始就将需要操作的this用变量保存起来。

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

zhangxianggis 提问者

非常感谢!
2016-03-28 回复 有任何疑惑可以回复我~

当把程序中的 ethis.timer=setInterval(function () {……改写为 ethis.timer=window.setInterval(function () {……,你会发现程序也是正常运行的,因为setInterval这个动作(或者说函数)是属于window的。动作的所有者是谁,this就是是谁,所以这里不能用直接用this。

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

你指的哪里不能直接用this?

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

zhangxianggis 提问者

aA[i].onmouseover=function(){ clearInterval(this.timer); this.timer=setInterval(function(){ this.style.width=this.offsetWidth+8+"px"; if(this.offsetWidth>=160) clearInterval(this.timer); },30) }
2016-03-28 回复 有任何疑惑可以回复我~

this是用来获取当前元素传进来的对象

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

举报

0/150
提交
取消
导航条菜单的制作
  • 参与学习       123899    人
  • 解答问题       813    个

水平、垂直、圆角导航条菜单,让您的技术探索之路更高效

进入课程

为什么不能直接用this呢

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