IE代码document.getElementById("btnShow2").attachEvent("onclick", function () { alert(this.id); });//这里的this 居然是window<input id="btnShow2" type="button" value="show window" />
如果是非IE的代码用addEventListener是可以的 this 指向button本身其实这问题很早就出现了,以前我是用把值赋到document对象上来获取一些属性,现在感觉这样做还是比较粗糙求解决方案IE不符合W3C就是多阿
如果是非IE的代码用addEventListener是可以的 this 指向button本身其实这问题很早就出现了,以前我是用把值赋到document对象上来获取一些属性,现在感觉这样做还是比较粗糙求解决方案IE不符合W3C就是多阿
function addEvent(node,type,listener){
if(node.addEventListener)
{
node.addEventListener(type,listener,false);
return true;
}
else if(node.attachEvent)
{
node['e'+type+listener]=listener;
node[type+listener]=function(){
node['e'+type+listener](window.event);
};
node.attachEvent('on'+type,node[type+listener]);
return true;
}
return false;
}; function removeEvent(node,type,listener){
if(node.removeEventListener)
{
node.removeEventListener(type,listener,false);
return true;
}
else if(node.detachEvent)
{
node.detachEvent('on'+type,node[type+listener]);
node[type+listener]=null;
return true;
}
return false;
};
var event = arguments[0]||window.event; //使用event
alert(this.id)
}
通常,在attachEvent中,this往往指向的是window,而不是调用方法的DOM对象。因此,需要在attachEvent中将listener重新指定一下。
<script type="text/javascript">
var id="theforever_csdn";
document.getElementById("btnShow2").attachEvent("onclick", function () {
var event = arguments[0]||window.event;
alert(event.srcElement.id);
//alert(this.id);
});
</script>
function addEvent(node,type,listener){
if(node.addEventListener)
{
node.addEventListener(type,listener,false);
}
else if(node.attachEvent)
{
node.attachEvent('on'+type,listener);
}
};
document.getElementById("btnShow2").attachEvent("onclick", function (e) {
e=e||event;
vat obj = e.srcElement || e.target;
alert(obj.id); });