本文介绍的方法可能与网上流传的一些方法不太一样,这里是使用闭包来实现的。并以一个简单的JS时钟示例作为演示。
(function JSClock(){ //partial class JSClock { var _timeID = null; var _timeRunning = false; var _info; var _this; //构造函数 function JSClock(elementId) { _this = this; _info = document.getElementById(elementId); } JSClock.prototype.getDateTime = function(){};//因为具体显示需求不同所以没实现 JSClock.prototype.run = function() { var now = {}; var tick = new Date(); now.hours = tick.getHours(); now.minutes = tick.getMinutes(); now.seconds = tick.getSeconds(); now.day = tick.getDay(); now.month = tick.getMonth()+1; now.date = tick.getDate(); now.year = tick.getYear(); if (now.year < 1000) now.year += 1900; _timeRunning = true; _info.innerHTML = _this.getDateTime(now); _timeID = setTimeout(arguments.callee,1000); }; JSClock.prototype.stop = function(){ if(!_timeRunning)return clearTimeout(_timeID); _timeRunning = false; }; //} window.JSClock = JSClock; })();
//partial class JSClock{ //virtual JSClock.prototype.getDateTime = function(now){ var current,weekday; current = now.year + "年" + now.month + "月" + now.date + "日 " + ((now.hours >12) ? now.hours -12 :now.hours); current += ((now.minutes < 10) ? ":0" : ":") + now.minutes; current += ((now.seconds < 10) ? ":0" : ":") + now.seconds; current += (now.hours >= 12) ? " (下午)" : " (上午)"; if(now.day==0) weekday = " 星期日"; if(now.day==1) weekday = " 星期一"; if(now.day==2) weekday = " 星期二"; if(now.day==3) weekday = " 星期三"; if(now.day==4) weekday = " 星期四"; if(now.day==5) weekday = " 星期五"; if(now.day==6) weekday = " 星期六"; current += weekday; return current; }; //}
//测试 var time = new JSClock("test"); time.run(); //运行结果会在ID为test的元素中实时显示当前时间格式如:
//2010年2月6日 0:13:53 (上午) 星期六
(责任编辑:admin) |