代码如下:我自己写的method1方法调用getId,this始终指向window,所以弹出的值是1,而不是Btn,我要想像addEventListener那样弹出Btn如何做到?<input type="button" id="Btn" value="点击" />var id=1
var el=document.getElementById("Btn");
el.addEventListener('click',getId,false);//在火狐中会执行这一句
function getId(){
alert(this.id)
}el.method1=function(){
getId()
}
el.method1()
var el=document.getElementById("Btn");
el.addEventListener('click',getId,false);//在火狐中会执行这一句
function getId(){
alert(this.id)
}el.method1=function(){
getId()
}
el.method1()
因为你之前写的是把函数在直接运行的,所以this=window
你把该函数绑定到一个元素的事件上面,那么这个this就表示了发生这个事件的元素了。
这个我自己也不怎么理解。上面的可以做以下改动
el.method1=getId;
el.method1();
试试
var el=document.getElementById("Btn");
el.addEventListener('click',getId,false);//在火狐中会执行这一句
function getId(){
alert(this.id)
}
el.method1=function(){
getId.call(el)
}
el.method1()