一、 效果预览

二、 实现

1. 按照特定的类结构布局。

2. 需要先引入jQuery,再引入此文件。

/**
* Author: CC11001100
*
* 简单倒计时
*
* 1. 支持页面内同时存在多个计时器并且不互相干扰
* 2. 支持多种格式,比如可以省略天、小时...等等,前面省略会自动加到后面,最多可以只有秒
* 3. 倒计时可以是秒数,可以是时间戳,可以是日期时间(设置一种即可)
*
* Usage:
*
* <div class="timer-simple-seconds" timer="3600" timestamp="1482737420000" datetime="2016-12-26 15:30:20">
* <span class="day">0</span>天
* <span class="hour">00</span>时
* <span class="minute">00</span>分
* <span class="second">00</span>秒
* </div>
*
*/
/**
* 按结构查找,依赖结构和class
*/
$(function(){ //对所有的计时器进行处理
var timers=$(".timer-simple-seconds");
for(var i=0;i<timers.length;i++){
var timer=$(timers[i]); if(timer.attr("timestamp")){
//如果是时间戳,则预处理一下时间为倒计时秒数
prepareProcessTimestamp2Timer(timer);
}else if(timer.attr("datetime")){
//处理时间格式为倒计时秒数
prepareProcessDatetime2Timer(timer);
}
//先调用一次,避免误差
processTimer(timer);
setInterval(processTimer,1000,timer);
} /**
* doWhat: 这个函数将时间戳预处理成统一的倒计时描述
*
* 对时间做一个预处理,因为如果服务器直接返回剩余的描述的话从服务器相应到客户端虽然短到几百毫秒但总是会有偏差的,这样子不太好
* 所以服务器只需要设置一个时间戳表示到哪里停止就可以了
*/
function prepareProcessTimestamp2Timer(timer){
var total=parseInt(timer.attr("timestamp"));
total=Math.round(total/1000);
var now=new Date().getTime()/1000;
timer.attr("timer",total-now);
} /**
* 将日期时间格式转为倒计时格式
*/
function prepareProcessDatetime2Timer(timer){
var timestamp=new Date(timer.attr("datetime")).getTime();
timer.attr("timestamp",timestamp);
prepareProcessTimestamp2Timer(timer);
} /**
* 倒计时,滴答滴答...
* @param {Object} timer
*/
function processTimer(timer){
var total=parseInt(timer.attr("timer"));
var t=total; //倒计时不能为负
if(total<0) return; //TODO 后续版本加上计时完毕可以回调函数 //找到显示时间的元素
var day=timer.find(".day");
var hour=timer.find(".hour");
var minute=timer.find(".minute");
var second=timer.find(".second"); //刷新计时器显示的值
if(day.length){
var d=Math.floor(t/(60*60*24));
day.text(d);
t-=d*(60*60*24);
}
if(hour.length){
var h=Math.floor(t/(60*60));
hour.text((h<10?"0":"")+h);
t-=h*(60*60);
}
if(minute.length){
var m=Math.floor(t/60);
minute.text((m<10?"0":"")+m);
t-=m*60;
}
if(second.length){
second.text((t<10?"0":"")+t);
} //一秒过去了...
total--;
timer.attr("timer",total);
} });

说明:

1. timer表示剩余的秒数,timestamp表示一个未来的unix时间戳,datetime表示一个yyyy-MM-dd HH:mm:ss格式的字符串表示的时间。

2. 三者只设置一个即可,同时设置会冲突的。

github地址: https://github.com/BenDanChen/simpleTimer

jQuery简单倒计时插件的更多相关文章

  1. jquery.countdown 倒计时插件的学习

    1.第一种简单的使用 第一个时间是你的倒计时截止时间,finalDate格式可以是YYYY/MM/DD MM/DD/YYYY YYYY/MM/DD hh:mm:ss MM/DD/YYYY hh:mm: ...

  2. jQuery自适应倒计时插件

    jQuery自适应倒计时插件 在线演示本地下载

  3. js 简单倒计时插件和使用方法

    // 倒计时插件 (function (){ function countdown(config){ var startDate = config.start ? new Date(config.st ...

  4. jquery简单的插件

    $(function() { $.fn.插件名称 = function(options) { var defaults = { Event : "click", //触发响应事件 ...

  5. jQuery简单日历插件版

    先来看demo:http://codepen.io/jonechen/pen/xOgZMz 插件代码: ; (function($) { var Calendar = function(ele, op ...

  6. jquery简单切换插件

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  7. jQuery.countdown倒计时插件

    https://github.com/hilios/jQuery.countdown 文档:http://hilios.github.io/jQuery.countdown/documentation ...

  8. jQuery倒计时插件

    倒计时jQuery插件 引言 最近又换工作了,还不错,我换工作的次数其实有点频繁,2014年7月份毕业,到现在工作已经换了3份了,工资跟刚毕业时候相比也涨了点儿,最近一次换工作我离开了深圳,来到了北京 ...

  9. Cropper – 简单的 jQuery 图片裁剪插件

    Cropper 是一个简单的 jQuery 图像裁剪插件.它支持选项,方法,事件,触摸(移动),缩放,旋转.输出的裁剪数据基于原始图像大小,这样你就可以用它们来直接裁剪图像. 如果你尝试裁剪跨域图像, ...

随机推荐

  1. csv 中 数值被自动转换成科学计数法 的问题 excel打开后数字用科学计数法显示且低位变0的解决方法

    保存在csv中的 013812345678,前面的0会被去掉,后面是科学计数法显示.保存成 col1,="013812345678" 即可. 注意,分隔符逗号后面直接接“=”等号. ...

  2. web前端基础知识-(七)Django进阶

    通过上节课的学习,我们已经对Django有了简单的了解,现在来深入了解下~ 1. 路由系统 1.1 单一路由对应 url(r'^index$', views.index), 1.2 基于正则的路由 u ...

  3. subtext3插件安装

    1.启用Package Control,利用它进行插件安装: 启用方法:菜单栏-view-show console 在弹出的输入框内,输入以下代码,按回车,稍后会出现package control安装 ...

  4. PHP优化小建议

    PHP优化小建议 1 .. foreach 效率更高,尽量用 foreach 代替 while 和 for 循环 2 ..循环内部不要声明变量,尤其是对象这样的变量 3 ..在多重嵌套循环中,如有可能 ...

  5. Docker 清理命令集锦

    杀死所有正在运行的容器 复制代码代码如下: docker kill $(docker ps -a -q) 删除所有已经停止的容器 复制代码代码如下: docker rm $(docker ps -a ...

  6. js计时器,点击开始计时,再点击停止

    点击倒计时开始,点击停止,再次点击又开始,再点停止... <i id=</i>秒 <em onclick="timeOpen();">开始</e ...

  7. 【CentOS7之防火墙命令】

    1.CentOS7的发现带了很多行的指令和新的技术.并且在帮助的中文解释也增多了很多这意味着Linux在中国的发展越来越呈现普及.今天来介绍下CentOS7的新防火墙firewall. 更多的可查看: ...

  8. shc

    A tool  for encrytion of bash shell scripts . Install: wget http://www.datsi.fi.upm.es/~frosal/sourc ...

  9. Sql Cursor example

    USE [EUC]GO/****** Object:  StoredProcedure [dbo].[SP_SME_QueryAuditLog]    Script Date: 02/05/2015 ...

  10. windows安装zookeeper-单机模式

    zookeeper下载地址:http://zookeeper.apache.org/releases.html#download   本次使用的是3.4.9版本 前提:请安装JDK 安装: 创建安装目 ...