OPPPPOP 2010-03-26 16:19
浏览 257
已采纳

javascript 对象丢失

[code="java"]
function invoice(st,ed,len){
this.spd=20;
this.ul=document.getElementById('invoiceing');
this.dv=this.ul.parentNode;
this.st=parseInt(st,10);
this.ed=parseInt(ed,10);
this.len=len;
this.doing.apply(this);
}
invoice.prototype={
show:function(){
this.ul.innerHTML='';
this.ul.previousSibling.innerHTML='入票中......';
this.dv.style.display='block';
this.dv.style.height=document.body.clientHeight;
this.dv.style.width=document.body.clientWidth;
},
stop:function(){
window.clearInterval(this.running);
this.ul.previousSibling.innerHTML='确定';
this.ul.previousSibling.firstChild.onclick=this.hide;
},
hide:function(){
this.dv.style.height='0px';
this.dv.style.width='0px';
this.dv.style.display='none';
},
rupiao:function(){
var o=this;
return function(){
var li=document.createElement('

');
li.innerHTML=o.lpad();
o.ul.appendChild(li);
if(o.st++>=o.ed)o.stop();
}
},
lpad:function(){
var snum=this.st.toString();
while(snum.length<this.len)snum='0'+snum;
return snum;
},
doing:function(){
this.show();
var fun=this.rupiao();
this.running=window.setInterval(fun,this.spd);
}
}
[/code]
[code="java"]


    [/code]
    这个函数在运行完毕时要给"确定"那个超链加上invioce.hide事件 ,但是发现此时的this已经不是invoice了 取不到变量dv
    求解

    • 写回答

    4条回答 默认 最新

    • wanghaolovezlq 2010-03-26 16:59
      关注

      这是因为你赋给dom对象的事件上,问题就在于事件不会马上触发,
      等它正确触发的时候,this已经不存在了,this只在对象的方法内有效

      本回答被题主选为最佳回答 , 对您是否有帮助呢?
      评论
    查看更多回答(3条)

    报告相同问题?

    悬赏问题

    • ¥15 安卓adb backup备份应用数据失败
    • ¥15 eclipse运行项目时遇到的问题
    • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
    • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
    • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
    • ¥50 成都蓉城足球俱乐部小程序抢票
    • ¥15 yolov7训练自己的数据集
    • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
    • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
    • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)