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

事件点击函数 为什么buttons[i].className不起作用

事件点击函数 为什么buttons[i].className不起作用

凤凰求蛊 2019-03-13 15:19:57
for(var i=0;i<buttons.length;i++){    buttons[i].onclick=function(){        var myIndex=this.getAttribute('index');    var indexOffset=parseInt(myIndex-index)*(-600);    animate(indexOffset);    index=myIndex;    this.className='on';//这一步 必须要用this才能实现效果 为什么}}
查看完整描述

2 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

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


    buttons[i].onclick=function(e){

    

    var myIndex=this.getAttribute('index');

    var indexOffset=parseInt(myIndex-index)*(-600);

    animate(indexOffset);

    index=myIndex;

    e.target.className='on';//这一步 必须要用this才能实现效果 为什么

}

}

这样也行


我不想解释 为什么 e.target 和 this 可以 但是 buttons[i]不行 但是 for(let i; i < buttons.length; ++i)就可以,以及e.currentTarget和e.target有什么区别。


别折磨我


查看完整回答
反对 回复 2019-04-08
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

兄弟你这是对event和this指向问题不怎么理解,在事件中 this指向的是当前元素 比如你给每个button绑定了点击事件,那么this指的是当前你点击的那一个, 而event.target是当前元素,所以这两个在概念上是一样的。 而currenttaret是指绑定事件的当前元素 两者本身差别不大,因为具体用到的方面不一样 所以得因需求而定


查看完整回答
反对 回复 2019-04-08
  • 2 回答
  • 0 关注
  • 610 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信