js倒计时的实现【主要是封装问题】

zioc2014 2013-09-10 06:22:49
运行到第二秒报错,我正在学这种写法,求指教。

另外,运行的方法是不是有问题?为什么不能写成 countdown.setTime(13,22,4).tick();?



$(function () {
var countdown={
second:0
,
minute:0
,
hour:0
,
setTime:function (h, m, s) {
this.second = s;
this.minute = m;
this.hour = h;
},

tick:function () {
this.second += 1

if (this.second == 60) {
this.second = 0;
this.minute += 1;

if (this.minute == 60) {
this.minute = 0;
this.hour += 1;

if (this.hour == 24) {
this.hour = 0;
}
}
}

var countdown = (this.hour < 10 ? ("0" + this.hour) : ("" + this.hour)) + ":" + (this.minute < 10 ? ("0" + this.minute) : ("" + this.minute)) + ":" + (this.second < 10 ? ("0" + this.second) : ("" + this.second));
$("#countdown").html(countdown);
setTimeout(this.tick, 1000);
}
}

countdown.setTime(13,22,4);
countdown.tick();
});


着色版:
...全文
217 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
conanhhy 2013-09-11
  • 打赏
  • 举报
回复
同意LS的,在最后加上return this就可以实现

countdown.setTime(13, 22, 4).tick();
china_booseen 2013-09-11
  • 打赏
  • 举报
回复
为什么不能写成 countdown.setTime(13,22,4).tick();? setTime:function(){ //.... return this; }
zioc2014 2013-09-11
  • 打赏
  • 举报
回复
引用 2 楼 conanhhy 的回复:
从LZ的代码来看,countdown内部,setTime和tick是同一级的,所以在调用时,像LZ贴出的代码

countdown.setTime(13,22,4);
countdown.tick();
而如果要写成countdown.setTime(13, 22, 4).tick(),则tick必须属于setTime内部才可以。
Jquey那种呢 怎么可以 .hide().show()
conanhhy 2013-09-11
  • 打赏
  • 举报
回复
从LZ的代码来看,countdown内部,setTime和tick是同一级的,所以在调用时,像LZ贴出的代码

countdown.setTime(13,22,4);
countdown.tick();
而如果要写成countdown.setTime(13, 22, 4).tick(),则tick必须属于setTime内部才可以。
fzfei2 2013-09-10
  • 打赏
  • 举报
回复
帮你改了报错问题,但你这不是倒计时器


    $(function () {
    	var countdown={
    		second:0
    		,
    		minute:0
    		,
    		hour:0
    		,
    		setTime:function (h, m, s) {
	            this.second = s;
	            this.minute = m;
	            this.hour = h;
        	}, 

        	tick:function () {
	            this.second += 1

	            if (this.second == 60) {
	                this.second = 0;
	                this.minute += 1;

	                if (this.minute == 60) {
	                    this.minute = 0;
	                    this.hour += 1;

	                    if (this.hour == 24) {
	                        this.hour = 0;
	                    }
	                }
	            }
 							var that=this;		 
	            var countdown = (this.hour < 10 ? ("0" + this.hour) : ("" + this.hour)) + ":" + (this.minute < 10 ? ("0" + this.minute) : ("" + this.minute)) + ":" + (this.second < 10 ? ("0" + this.second) : ("" + this.second));
	            $("#countdown").html(countdown);
	            setTimeout(function(){
	              that.tick()
	            }, 1000);
	        }
    	}
		
		  countdown.setTime(13,22,4);
    	countdown.tick();
    });

87,904

社区成员

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

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