JavaScript实现的一个倒计时的类


Posted in Javascript onMarch 12, 2015

近期在做排列五的彩票项目,每一期都有购彩时段,即用户打开这个排列五的页面时,会从服务器传来一个remaintime(离本次彩期结束的剩余时间),然后这个时间在客户端递减呈现给用户看,让用户获得本次彩期的剩余时间。

实现原理挺简单的,在此不在赘述,运行以下代码查看demo:

<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<title>index</title>
<style type="text/css">
em{color:#f00;}
</style>
</head>

<body>
<div id="remaintime"></div>
<script type="text/javascript">

var TheTime = function(){
 this.init.apply(this,arguments);
};

TheTime.prototype = {
 init: function(obj){
 var that = this;
 obj = that.buildParam(obj);
 that.callback = obj.callback;
 var container = that.container = document.getElementById(obj.container);
 container.innerHTML = '<em></em>小时<em></em>分钟<em></em>秒';
 var hourSpace = that.hourSpace = container.getElementsByTagName('em')[0];
 var minuteSpace = that.minuteSpace = container.getElementsByTagName('em')[1];
 var secondSpace = that.secondSpace = container.getElementsByTagName('em')[2];
 if(obj.remaintime==0){
  that.resetTime();
  return;
 }

 that.hours = Math.floor(obj.remaintime/3600);
 that._remainder1 = obj.remaintime % 3600;
 that.minutes = Math.floor(that._remainder1/60);
 that.seconds = that._remainder1 % 60;
 var timer = that.timer = setInterval(function(){
  that.renderTime.apply(that);
 },1000);
 },
 buildParam: function(obj){
 obj = {
  //container为dom节点的id
  container: obj.container || 'container',
  remaintime: Number(obj.remaintime) || 0,
  //倒计时完成后的回调
  callback: obj.callback || new Function
 };
 return obj;
 },
 resetTime: function(){
 var that = this;
 that.container.innerHTML = "已经截止";
 },
 //刷新时间
 renderTime: function(){
 //debugger;
 var that = this;
 if(that.seconds>0){
  that.seconds--;
 }else{
  that.seconds = 59;
  if(that.minutes>0){
  that.minutes--;
  }else{
  that.minutes = 59;
  if(that.hours>0){
   that.hours--;
  }
  }
 }
 
 //时刻监听
 if(that.hours==0 && that.minutes==0 && that.seconds==0){
  //执行回调
  that._callback();
 }
 var bitHandle = that.bitHandle;

 var _hour = bitHandle(that.hours);
 var _minute = bitHandle(that.minutes);
 var _second = bitHandle(that.seconds);
 that.hourSpace.innerHTML = _hour;
 that.minuteSpace.innerHTML = _minute;
 that.secondSpace.innerHTML = _second;
 },
 //对于位数的处理,确保返回两位数
 bitHandle: function(num){
 var str = num.toString();
 if(str.length<2){
  str = 0 + str;
 }
 return str;
 },
 _callback: function(){
 var that = this;
 clearInterval(that.timer);
 that.callback();
 }

};

new TheTime({
 //容器id
 container: 'remaintime',
 //服务器返回的剩余时间,单位为秒
 remaintime: 10000,
 //倒计时完成时的回调
 callback: function(){
 document.getElementById('remaintime').innerHTML = '已截止';
 }
});
</script>
</body>
</html>
Javascript 相关文章推荐
javascript实现二分查找法实现代码
Nov 12 Javascript
JS获取后台Cookies值的小例子
Mar 04 Javascript
javascript中substring()、substr()、slice()的区别
Aug 30 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
Jun 24 Javascript
一文让你彻底搞清楚javascript中的require、import与export
Sep 24 Javascript
详解在vue-cli中使用路由
Sep 25 Javascript
解决layui 复选框等内置控件不显示的问题
Aug 14 Javascript
vue 父组件给子组件传值子组件给父组件传值的实例代码
Apr 15 Javascript
vue 进阶之实现父子组件间的传值
Apr 26 Javascript
Vuex实现数据共享的方法
Dec 20 Javascript
如何修改Vue打包后文件的接口地址配置的方法
Apr 22 Javascript
TypeScript 使用 Tuple Union 声明函数重载
Apr 07 Javascript
JavaScript将XML转成JSON的方法
Mar 12 #Javascript
JavaScript中诡异的delete操作符
Mar 12 #Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
Mar 12 #Javascript
jquery实现页面关键词高亮显示的方法
Mar 12 #Javascript
JavaScript设计模式学习之“类式继承”
Mar 12 #Javascript
鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解
Mar 12 #Javascript
JavaScript中return false的用法
Mar 12 #Javascript
You might like
咖啡知识大全
2021/03/03 新手入门
PHP入门速成教程
2007/03/19 PHP
php递归方法实现无限分类实例代码
2014/02/28 PHP
PHP面向对象程序设计之类常量用法实例
2014/08/20 PHP
PHP-FPM 的管理和配置详解
2019/02/17 PHP
php项目中类的自动加载实例讲解
2019/09/12 PHP
一个对于js this关键字的问题
2007/01/09 Javascript
JavaScript 图像动画的小demo
2012/05/23 Javascript
jQuery使用之设置元素样式用法实例
2015/01/19 Javascript
JS实现自适应高度表单文本框的方法
2015/02/25 Javascript
javascript基于DOM实现省市级联下拉框的方法
2015/05/14 Javascript
javascript动画算法实例分析
2015/07/31 Javascript
JavaScript中的子窗口与父窗口的互相调用问题
2017/02/08 Javascript
基于webpack-hot-middleware热加载相关错误的解决方法
2018/02/22 Javascript
微信小程序 腾讯地图显示偏差问题解决
2019/07/27 Javascript
浅谈Layui的eleTree树式选择器使用方法
2019/09/25 Javascript
小程序实现横向滑动日历效果
2019/10/21 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
JS加载解析Markdown文档过程详解
2020/05/19 Javascript
ant design vue导航菜单与路由配置操作
2020/10/28 Javascript
利用Python实现简单的相似图片搜索的教程
2015/04/23 Python
使用python实现rsa算法代码
2016/02/17 Python
Python的消息队列包SnakeMQ使用初探
2016/06/29 Python
python实现微信自动回复功能
2018/04/11 Python
Django之Mode的外键自关联和引用未定义的Model方法
2018/12/15 Python
Python爬虫设置ip代理过程解析
2020/07/20 Python
python 爬取B站原视频的实例代码
2020/09/09 Python
CSS3色彩模式有哪些?CSS3 HSL色彩模式的定义
2016/04/26 HTML / CSS
HTML5 CSS3新的WEB标准和浏览器支持
2009/07/16 HTML / CSS
澳洲最大的时尚奢侈品电商平台:Cettire
2020/06/15 全球购物
应届生服装设计自我评价
2013/09/20 职场文书
2015教师年度考核评语
2015/03/25 职场文书
浅谈Redis的几个过期策略
2021/05/27 Redis
Python OpenCV 图像平移的实现示例
2021/06/04 Python
Javascript 解构赋值详情
2021/11/17 Javascript
Oracle配置dblink访问PostgreSQL的操作方法
2022/03/21 PostgreSQL