做成一个类之后,想在一个页面里多次调用它,发现出了点问题,
下面的代码是个解决办法,(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>
下面的代码是个解决办法,(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>
有下面的解决方法 不过看起来你仍然会觉得不太好
this.h.firstChild.instance = this;
this.h.firstChild.onclick = function() { this.instance.getname(this.event.srcElement);}
但是如果下狠心把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);});
}