首页 > 代码库 > 多个倒计时切换 開始和结束
多个倒计时切换 開始和结束
/* * @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; })()
多个倒计时切换 開始和结束