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就是多阿

解决方案 »

  1.   


    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;
    };
      

  2.   

    document.getElementById('btnShow2').onclick= function(){
    var event = arguments[0]||window.event; //使用event
    alert(this.id)
    }
      

  3.   

    以上所写的是添加事件绑定和移除事件绑定的两个函数,楼主可以将它们放到一个命名空间中,最后不要写成全局函数
    通常,在attachEvent中,this往往指向的是window,而不是调用方法的DOM对象。因此,需要在attachEvent中将listener重新指定一下。
      

  4.   

    IE的处理逻辑认为这很正常,既然是绑定事件,就要先获取事件对象才行。<input id="btnShow2" type="button" value="show window" />
    <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>
      

  5.   

    1、document.getElementById("btnShow2").onclick=function () { alert(this.id); };2、
     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); });