精华帖 (7) :: 良好帖 (5) :: 新手帖 (3) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-23
最后修改:2009-09-23
clone168 写道
放在Timer构造函数内部的话:
function Timer(id){ this.id = id; this.timer = null; this.count = 0; Timer.prototype = { begin : function(count){ //alert(this); this.count = count; this.show(this)();//注意这里不是Timer.show(this)(); this.timer = setInterval(this.show(this),1000);//注意这里不是Timer.show(this)(); }, show : function(obj){ return function(){ if(obj.count < 0){ document.getElementById(obj.id).innerHTML = "over"; clearInterval(obj.timer); return ; } document.getElementById(obj.id).innerHTML = obj.count; obj.count--; } } }; } 很奇怪,不知道什么原因
其实只要把例子构造得稍微复杂点的例子,就很容易理解这个问题了
function Timer(id){ this.id = id; this.timer = null; this.count = 0; this.begin=function(count){ alert('this:'+id); this.count = count; this.show(this)();//注意这里不是Timer.show(this)(); this.timer = setInterval(this.show(this),1000);//注意这里不是Timer.show(this)(); } Timer.prototype = { id:"abcd", begin : function(count){ alert('prototype'); this.count = count; this.show(this)();//注意这里不是Timer.show(this)(); this.timer = setInterval(this.show(this),1000);//注意这里不是Timer.show(this)(); }, show : function(obj){ return function(){ if(obj.count < 0){ document.getElementById(obj.id).innerHTML = "over"; clearInterval(obj.timer); return ; } document.getElementById(obj.id).innerHTML = obj.count; obj.count--; } } }; } new Timer('aaa').begin(10); |
|
返回顶楼 | |
发表时间:2009-10-03
我也回个
function Timer(count,id) { var start=count,obj=document.getElementById(id); do { (function (count) { setTimeout(function () { obj.innerHTML=count; },(start-count)*1000); })(count); } while (count--); } 一个函数,不做构造了,直接调用就执行 Timer(10,"oDiv"); |
|
返回顶楼 | |
发表时间:2009-10-05
我也回个
function Timer(count,id) { var start=count,obj=document.getElementById(id); do { (function (count) { setTimeout(function () { obj.innerHTML=count; },(start-count)*1000); })(count); } while (count--); } 一个函数,不做构造了,直接调用就执行 Js代码 Timer(10,"oDiv"); |
|
返回顶楼 | |