小白问个事件监听传参数的问题

一个函数,当事件发生的时候触发事件的元素改变属性,要用到this参数。

用addEventListener不能传参数(我想传一个this过去),网上的方法有点复杂看不懂,所以我想到用setAttribute的方法试试,没想到也能运行,但是网上说这方法不行,为什么;
var a = true;
function fn(_this){
if(a){
_this.style.background='#f00';
}else{
_this.removeAttribute("style");
}
a = !a;
}
document.getElementById('input1').setAttribute('onclick','fn(this)');


//HTML
<form action="456" method="get" accept-charset="utf-8">
<input id="input1" type="button" name="a123" value="645" style="color:#ccc">
</form>

路人戊_
浏览 1042回答 1
1回答

ruibin

其实没有那么复杂,你绑定在函数里面直接使用this就行,这时候函数里面的this就指向你绑定点击事件的元素(input1)。你这样做其实也可以,但是不使用的addEventListener绑定的事件,有些缺陷(只能绑定一个)。
打开App,查看更多内容
随时随地看视频慕课网APP