当前位置: 代码迷 >> Web前端 >> 关于IE上this关键字在监听事件下的有关问题
  详细解决方案

关于IE上this关键字在监听事件下的有关问题

热度:95   发布时间:2012-11-04 10:42:41.0
关于IE下this关键字在监听事件上的问题!

Xhtml Code:

?

<input name="" type="button" id="aa" value="aaa" />

?

Javascript Code:

?

var btn=document.getElementById("aa");
if(document.all){
??? btn.attachEvent("onclick",function(e){
??? ??? ??? ??? ??? ??? ??? ??? ??? ?? alert(e.srcElement.value);?? //*****
??? ??? ??? ??? ??? ??? ??? ??? ??? ?? });
??? }
else{
??? btn.addEventListener("click",function(){alert(this.value)},false);
}

?

?

注:标星号的地方我有以下疑问:为什么用this表示当前对象的时候,返回的值是undefind呢?

当然,e.srcElement.value是正常的。

1 楼 clue 2010-07-20  
事件响应时,调用监听函数的作用域是全局
即scope为window

你可以试试alert(this===window)

大部分JS框架封装的事件接口都实现了指定作用域的功能,实际上绑定的函数是另外生成的,在它内部会使用call或apply以传入的作用域调用函数。
2 楼 hao3721 2010-07-20  
好的!谢谢你!
  相关解决方案