多个倒计时切换 開始和结束

Posted yxysuanfa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多个倒计时切换 開始和结束相关的知识,希望对你有一定的参考价值。

/* 
* @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)?

this.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; })()

demo:http://w3cweb.sinaapp.com/7/demo.html

以上是关于多个倒计时切换 開始和结束的主要内容,如果未能解决你的问题,请参考以下文章

web开发性能优化---SEO优化篇

Hive权限之审计

自己定义标签开发04-简单标签库功能具体解释

切换片段时如何维护子视图的状态?

SD/MMC的Commands和Responses的总结

python使用上下文对代码片段进行计时,非装饰器