JS 类的问题

shmilyhe 2009-05-06 07:32:22


<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>无标题页</title>
<style type="text/css">
.game{ width:80px;height:110px;border:1px solid #BAD1FC; background:url(hhh.gif);}
.game head{}
.game foot{}
</style>
</head>
<body>
<script type="text/jscript">
function person(id,name,x,y){
this._id=id;
this.name=name;
this._x=x;
this._y=y;
this._bl=1;
this._m=1;
}
person.prototype.getdiv =function(){

if(document.getElementById(this._id))
{
this._div=document.getElementById(this._id);
} else
{
try{
this._div=document.createElement("div");
this._div.id=this._id;
document.body.appendChild(this._div);
this._div_h=document.createElement("div");
this._div_f=document.createElement("div");
this._div.appendChild(this._div_h);
this._div.appendChild(this._div_f);
this._div.style.position="absolute";
this._div.style.top=this._y+"px";
this._div.style.left=this._x+"px";
this._div.setAttribute("class","game");
//this._div.innerHTML="success";
this._div_h.setAttribute("class","head");
this._div_f.setAttribute("class","foot");
this._div_h.innerHTML=this.name+this._id;
}catch(e){return false;}
}
}
var a= new person('eric','shmily','88','400');
a.getdiv();
</script>



</body>
</html>


在IE中只显示this._div_h.innerHTML=this.name+this._id;
的内容,在firefox中本来是能正确运行正确的(能看到背景),但我试着用JSON写完再改回来就什么也不显示了
望大侠指点一下,不胜感激
...全文
68 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
shmilyhe 2009-05-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jack420124 的回复:]
我靠,你this._div_h.innerHTML不代表window啊,
而代表的是 a (你new 的对象啊)
[/Quote]
你能解释一下"你this._div_h.innerHTML不代表window啊"么?我在类中直接引用的是document对象呀,没有用到window;而且我已把_div append到document 的body结点上了,再把剩下的两个div再append到_div下,我觉得这在逻辑上没有错呀.我的想法只是在类中持有document的对象的引用,然后通过操作自己的对象来对页面进行控制.而且,从语义上看,this._div_h 是我下面声明的对象a的一个属性,下面的innerHTML属性呀.在IE下我查看生成的div关系也是正确的呀.再如果,这个属性只属于a这个对象,那么页面上不可能会有输出呀,
shmilyhe 2009-05-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jack420124 的回复:]
我靠,你this._div_h.innerHTML不代表window啊,
而代表的是 a (你new 的对象啊)

document.body.appendChild(this._div);
this._div_h=document.createElement("div");
this._div_f=document.createElement("div");
this._div.appendChild(this._div_h);
this._div.appendChild(this._div_f);



我已经把this._div append 到body下而this._div_f和this._div_h append到this._div下,
之所以要定义成属性,我的想法是,为了方便获得这些句柄以后做修改.我觉得这没能问题呀
shmilyhe 2009-05-08
  • 打赏
  • 举报
回复

  
document.body.appendChild(this._div);
this._div_h=document.createElement("div");
this._div_f=document.createElement("div");
this._div.appendChild(this._div_h);
this._div.appendChild(this._div_f);

我已经把this._div append 到body下而this._div_f和this._div_h append到this._div下,
之所以要定义成属性,我的想法是,为了方便获得这些句柄以后做修改.我觉得这没能问题呀
jack420124 2009-05-07
  • 打赏
  • 举报
回复
我靠,你this._div_h.innerHTML不代表window啊,
而代表的是 a (你new 的对象啊)
ZhuxiaowenLinda 2009-05-07
  • 打赏
  • 举报
回复
左看右看,我还是觉得你的Id有问题。。。好像你的id是虚拟的。。。因为你创建的id在获得的id的后面。。。
ZhuxiaowenLinda 2009-05-07
  • 打赏
  • 举报
回复
学习。。。学习。。。

52,792

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧