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 设计模式 安全沙箱模式
Sep 24 Javascript
FF火狐下获取一个元素同类型的相邻元素实现代码
Dec 15 Javascript
jquery插件开发之实现google+圈子选择功能
Mar 10 Javascript
setinterval()与clearInterval()JS函数的调用方法
Jan 21 Javascript
IE及IE6浏览器中判断JS文件加载成功失败的方法
Feb 18 Javascript
js带缩略图的图片轮播效果代码分享
Sep 14 Javascript
JS实现的几个常用算法
Nov 12 Javascript
vue-cli项目中怎么使用mock数据
Sep 27 Javascript
解决linux下node.js全局模块找不到的问题
May 15 Javascript
vue .sync修饰符的使用详解
Jun 15 Javascript
重学JS 系列:聊聊继承(推荐)
Apr 11 Javascript
vue 通过base64实现图片下载功能
Dec 19 Vue.js
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
图书管理程序(一)
2006/10/09 PHP
在字符串指定位置插入一段字符串的php代码
2010/02/16 PHP
使用PHP实现阻止用户上传成人照片或者裸照
2014/12/25 PHP
PHP中把数据库查询结果输出为json格式简单实例
2015/04/09 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
2020/12/01 PHP
用Javascript读取中文COOKIE的解决办法
2007/02/15 Javascript
JavaScript 无符号右移运算符
2009/04/17 Javascript
获取网站跟路径的javascript代码(站点及虚拟目录)
2009/10/20 Javascript
JS小框架 fly javascript framework
2009/11/26 Javascript
jQuery 前的按键判断代码
2010/03/19 Javascript
JavaScript异步调用定时方法并停止该方法实现代码
2012/03/16 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
jquery插件jSignature实现手动签名
2015/05/04 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
2015/06/06 Javascript
jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用
2016/01/23 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
2017/03/09 Javascript
JavaScript对象拷贝与Object.assign用法实例分析
2018/06/20 Javascript
基于Vue-cli快速搭建项目的完整步骤
2018/11/03 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
webgl实现物体描边效果的方法介绍
2019/11/27 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
压缩包密码破解示例分享(类似典破解)
2014/01/17 Python
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
2014/11/06 Python
Python函数的周期性执行实现方法
2016/08/13 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
2018/07/16 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
2018/07/31 Python
Python命令行参数解析工具 docopt 安装和应用过程详解
2019/09/26 Python
Columbia Sportswear法国官网:全球户外品牌
2020/09/25 全球购物
医药营销个人求职信范文
2014/02/07 职场文书
增员口号大全
2014/06/18 职场文书
演讲比赛的活动方案
2014/08/28 职场文书
庆祝国庆节演讲稿2014
2014/09/19 职场文书
《改造我们的学习》心得体会
2014/11/07 职场文书
初中毕业生感言
2015/07/31 职场文书
CSS实现漂亮的时钟动画效果的实例代码
2021/03/30 HTML / CSS
python基于opencv批量生成验证码的示例
2021/04/28 Python