一、 效果预览

二、 实现

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. 推荐一款Mac上好用的Markdown编辑器

    [TOC] 推荐一款Mac上好用的Markdown编辑器 正文 我算是一位Evernote的重度用户吧.之前也尝试过为知笔记,有道云笔记,微软的onenote,最后还是觉的Evernote.因为我喜欢 ...

  2. DUT Star Weekly Contest #3 Problem F Solution

    题目链接 问题转化 \[a_i+a_j+(i-j)^2=a_i+i^2+a_j+j^2-2ij\] 令 \(b_i=a_i+i^2\) , 问题化为: 求 \[\max \{b_i+b_j-2ij\} ...

  3. placeholder实现的两种方式

    /** * PlaceHolder组件 * $(input).placeholder({ * word: // @string 提示文本 * color: // @string 文本颜色 * evtT ...

  4. Js获取当前日期时间及其它操作

    Js获取当前日期时间及其它操作var myDate = new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年份 ...

  5. 解决Maven工程中报 Missing artifact jdk.tools:jdk.tools:

    jdk.tools:jdk.tools是与JDK一起分发的一个JAR文件,可以如下方式加入到Maven项目中:<dependency>    <groupId>jdk.tool ...

  6. WPF程序将DLL嵌入到EXE的两种方法

    WPF程序将DLL嵌入到EXE的两种方法 这一篇可以看作是<Visual Studio 版本转换工具WPF版开源了>的续,关于<Visual Studio 版本转换工具WPF版开源了 ...

  7. jemter的安装和使用

    1.下载地址:http://jmeter.apache.org/download_jmeter.cgi 2.安装 (1)解压,解压之后如图 (2)配置环境变量 我解压之后的目录是:D:\softwar ...

  8. JS学习:第二周——NO.4DOM库

    DOM库封装练习 var utils = (function () { var flg = 'getComputedStyle' in window;//惰性思想的运用: function makeA ...

  9. 我的C语言进化史

    Hello, world! 这三年就看看我的C语言还有JAVAscript进化史吧.更厉害的sunmarvell,我等你

  10. 项目vue2.0仿外卖APP(三)

    项目的结构如下:                   项目资源准备 准备项目的各种图片资源等等 注意:在webpack可以不用css sprite,直接用单张图片,因为它会帮忙打包. 还有SVG图片, ...