做成一个类之后,想在一个页面里多次调用它,发现出了点问题,
下面的代码是个解决办法,(var o=this;这句)
但是觉得不太好的感觉,不太想这样,
主要是对this和对象搞得还不太明白,求高手相助!
<!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>
    <title>无标题页</title>
</head>
<body>
<div id="holder"></div><br /><div id="Div1"></div>
    <script language="javascript" type="text/javascript">
    //var obj;
    function A(str,id){
    this.name=str;
    this.h=document.getElementById(id);;
    this.setname=function(objs){
        this.h.innerHTML="<div id='content'>aaaa</div>";
    }
    A.prototype.getname=function(obj){//debugger;
        //document.write(this.name);
        alert(this.name);
        alert(obj.innerText);
    }
    this.init=function(){
    var o=this;
        this.h.firstChild.attachEvent("onclick",function(){o.getname(this.event.srcElement);});//function(){test.getname();}
    }
    }
    var test=new A("a","holder");
    test.setname(test);
    test.init();
    var tt=new A("b","Div1");
    tt.setname(tt);
    tt.init();
    </script>
</body>
</html>

解决方案 »

  1.   

    this是指运行时的当前对象 而不是定义是对象
    有下面的解决方法 不过看起来你仍然会觉得不太好
    this.h.firstChild.instance = this;
    this.h.firstChild.onclick = function() { this.instance.getname(this.event.srcElement);}
      

  2.   

    楼上的方法this.event.srcElement改为this能取得相同效果,this终究是个指针的,和var o=this相比起来,效率应该能好一点,不知道还有没有更好的办法,多谢了,搞定了就结贴
      

  3.   

    改成这样看看~~`如果不行,可能是由于this指向了时间函数数组去了~~
    但是如果下狠心把attachEvent改成this.h.firstChild.onclick=o;this.init=function(){
        var o=this;
        this.h.firstChild.o=o;
        this.h.firstChild.attachEvent("onclick",function(){this.o.getname(this.event.srcElement);});
    }