多個倒計時切換 開始和結束
/* * @Author: Mark * @Date: 2015-08-06 13:54:01 * @Last Modified by: Mark * @Last Modified time: 2015-08-17 11:49:27 */ var tmover=(function(){ function tim(opt){ _this=this;//保存當前對象 this.timer=null; //設置定時器 this.opme=Object.prototype.toString.call(opt.obj).slice(8,-1)=="String"?document.querySelectorAll(opt.obj):null; //獲取定時器對象 this.stxt=Object.prototype.toString.call(opt.txtstart).slice(8,-1)=="String"?opt.txtstart:"距離開始"; //設置距離開始的默認值 this.ltxt=Object.prototype.toString.call(opt.txtstart).slice(8,-1)=="String"?opt.txtlast:"剩余"; //設置剩余的默認值 for (var i = 0; i < this.opme.length; i++) { //循環當前頁面全部定時器 this.stime=this.opme[i].getAttribute(opt.stat)?demo:http://w3cweb.sinaapp.com/7/demo.htmlthis.opme[i].getAttribute(opt.stat):this.opme[i].getAttribute(opt.end); //假設沒有距離開始的需求,那就說明僅僅有單個倒計時 this.opme[i].flag=1; //設置定時器開關 this.opme[i].str=""; //設置每一個DOM的字符串顯示文字 this.endtime=this.opme[i].getAttribute(opt.end); //獲取倒計時 this.loop({oindex:this.opme[i], oend:_this.endtime, tend:opt.txtend, tstat:_this.stxt, tlast:_this.ltxt, ostm:_this.stime, ck:true }); //初始化倒計時進行 }; } tim.prototype={ constructor : ‘tmover‘, //設置原型引用對象為tmover move:function(json){ //倒計時計算 _this.ender=json.ck?new Date(json.ostm).getTime():new Date(json.oend).getTime();//沒有開始倒計時 就設置結束倒計時 _this.stattime=new Date().getTime(); _this.opatime=_this.ender-_this.stattime; //時間差 _this.second=(_this.opatime)/1000; _this.Minute=Math.floor(_this.second/60); _this.houre=Math.floor(_this.Minute/60); _this.day=Math.floor(_this.houre/24); _this.houres=Math.floor(_this.houre%24); _this.Minutes=Math.floor(_this.Minute%60); _this.seconds=Math.floor(_this.second%60); _this.swite(json); }, swite:function(json){//推斷DOM顯示內同 if(json.oend==json.ostm){//僅僅有結束倒計時需求 if(_this.opatime<=0&&json.oindex.flag){ _this.setText(json.oindex,json.tend);//設置結束問題 下同 json.oindex.flag=0; _this.clear(json.oindex.timer);//清楚倒計時 下同 }else if(_this.opatime>0){ _this.nowtext(json.oindex,json.tlast); //顯示倒計時時間 下同 json.oindex.flag=1; } }else if(json.oend!=json.ostm&&!json.ck){//有開始和結束需求 而且已經進入結束倒計時 if(_this.opatime<=0&&json.oindex.flag){ _this.setText(json.oindex,json.tend); json.oindex.flag=0; _this.clear(json.oindex.timer); }else if(_this.opatime>0){ _this.nowtext(json.oindex,json.tlast); json.oindex.flag=1; } }else if(json.oend!=json.ostm&&json.ck){//有開始和結束需求 if(_this.opatime<=0){ _this.clear(json.oindex.timer); _this.loop({oindex:json.oindex, oend:json.oend,tend:json.tend, tstat:json.tstat, tlast:json.tlast, ostm:json.ostm, ck:false }); }else{ _this.nowtext(json.oindex,json.tstat); } } }, setText:function(obj,txt){ obj.innerText=""; obj.innerText=txt; }, nowtext:function(obj,str){ obj.innerText=str+_this.day+"天"+_this.houres+"小時"+_this.Minutes+"分"+_this.seconds+"秒"; }, loop:function(json){ _this.move(json); json.oindex.timer=setInterval(function(){_this.move(json)},1000); }, clear:function(all){ clearInterval(all); } } return tim; })()
多個倒計時切換 開始和結束