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

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才能实现效果 为什么

}

}


凤凰求蛊
浏览 614回答 2
2回答

慕斯709654

for(var i=0;i<buttons.length;i++){&nbsp; &nbsp; buttons[i].onclick=function(e){&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; var myIndex=this.getAttribute('index');&nbsp; &nbsp; var indexOffset=parseInt(myIndex-index)*(-600);&nbsp; &nbsp; animate(indexOffset);&nbsp; &nbsp; index=myIndex;&nbsp; &nbsp; e.target.className='on';//这一步 必须要用this才能实现效果 为什么}}这样也行我不想解释 为什么 e.target 和 this 可以 但是 buttons[i]不行 但是 for(let i; i < buttons.length; ++i)就可以,以及e.currentTarget和e.target有什么区别。别折磨我

天涯尽头无女友

兄弟你这是对event和this指向问题不怎么理解,在事件中 this指向的是当前元素 比如你给每个button绑定了点击事件,那么this指的是当前你点击的那一个, 而event.target是当前元素,所以这两个在概念上是一样的。 而currenttaret是指绑定事件的当前元素 两者本身差别不大,因为具体用到的方面不一样 所以得因需求而定
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript