可能没说清楚我的意思是
this.addEvent("click", obj, this.tabEvent);
this.addEvent("click", obj, _tabEvent);
this.addEvent("click", obj, eventFun);
这三个事件添加后 各个函数内部this的返回对象.
代码里仅仅是实现了第一种

解决方案 »

  1.   

    tab是个构造器,t是tab的一个实例,实际上也是对象。你在ie6中返回的this指的就是t。tab 中的tabEvent方法实际上写得没有道理,不应该是alert(this.nodeName),它是未定义的(因为此时this指向t,而不是div节点)。实际上应为alert(e.nodeName);
      

  2.   

    试试下面的代码你就知道了
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <style>
    #test{
        padding:3px;
        background-color:#CCCCCC;
    }
    #test span{ border:1px solid #fff; }
    </style>
    </head><body>
    <div id="test"><span>tab</span><a>more</a></div>
    <script type="text/javascript">
    function eventFun(){
        alert(this.nodeName);
    }
    var tab = function(){
        var _this = this;
        this.tabEvent = function(e){
            e = (e.target || window.event.srcElement);
            alert(e.nodeName)
        }
        this.addEvent = function(eventName, obj, fun){
            if(obj.attachEvent){
                obj.attachEvent("on" + eventName, fun);
            } else if(obj.addEventListener){
                obj.addEventListener(eventName, fun, false);
            }
        }
        this.init = function(obj){
            obj.index = 1;
            this.addEvent("click", obj, this.tabEvent);
            function _tabEvent(e){
                alert(this.nodeName);
            }
        }
    }
    var t = new tab();
    t.init(document.getElementById("test"));
    </script>
    </body>
    </html>
      

  3.   

    用事件获取我已经尝试过了
    e = (e.target || window.event.srcElement);
    这个是获得触发事件的节点
    如果是节点内部还有子元素
    将返回点击到的子元素 而不是被绑定的节点.