在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 事件點(diǎn)擊函數(shù) 為什么buttons[i].className不起作用

事件點(diǎn)擊函數(shù) 為什么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才能實(shí)現(xiàn)效果 為什么

}
}

回答
編輯回答
澐染

兄弟你這是對event和this指向問題不怎么理解,在事件中 this指向的是當(dāng)前元素 比如你給每個button綁定了點(diǎn)擊事件,那么this指的是當(dāng)前你點(diǎn)擊的那一個, 而event.target是當(dāng)前元素,所以這兩個在概念上是一樣的。 而currenttaret是指綁定事件的當(dāng)前元素 兩者本身差別不大,因?yàn)榫唧w用到的方面不一樣 所以得因需求而定

2018年9月14日 16:18
編輯回答
撥弦
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才能實(shí)現(xiàn)效果 為什么
}
}

這樣也行

我不想解釋 為什么 e.target 和 this 可以 但是 buttons[i]不行 但是 for(let i; i < buttons.length; ++i)就可以,以及e.currentTarget和e.target有什么區(qū)別。

別折磨我

2017年4月29日 17:21