主页 个人前端笔记 attachEvent中的this问题
admin
发表于2012-11-11 18:37:46    只看楼主 楼主
头衔:  精益求精
注册时间: 2012-10-07
用户组: 日常管理组
发帖数:  502
金币数:  186
短消息
function clk(){

    alert(this);

   this.style.......

}

if(navigator.userAgent.indexOf("MSIE")>0)

{

$("aes5").attachEvent("onclick",clk);

}

else

{

$("aes5").addEventListener("click",clk);

}

结果是火狐,谷歌浏览器正常,而ie报错,

打印的结果chrome,ff中的this指向的是当前的对象,而ie中的this指的是window对象

 

解决方法

function clk(e){

  e= window.event || e; 

  var obj = e.srcElement   ||   e.target; 

}

通过事件对象来获取当前的元素对象,使得浏览器兼容,当然不能再使用this了。
 
admin
发表于2012-11-11 18:38:11 1楼
头衔:  精益求精
注册时间: 2012-10-07
用户组: 日常管理组
发帖数:  502
金币数:  186
短消息
还有一种更简单的方法,使用call函数传递对象

$("aes5").attachEvent("onclick",function(){clk.call($("aes5"))});

回复人
回复内容

Powered BY YouYaX
个人自主开发论坛,从2010年10月份开发至今!

操作管理