jQuery实现商品活动倒计时


Posted in Javascript onOctober 16, 2015

倒计时一般是用来表示未来某一时刻距现在时刻还剩多少时间。倒计时在WEB上应用非常广泛,如考试系统倒计时,团购网站中的优惠活动倒计时等等。今天,我们来使用jQuery实现一个简单的倒计时功能。

jQuery实现商品活动倒计时

本文以团购网站的倒计时为背景,我们知道,网站会给每个优惠活动(商品)定一个结束时间,也就是到期时间,但系统时间到达了结束时间,就意味着活动结束。因此,我们在HTML中就要定义活动的结束时间。
HTML

<ul class="prolist"> 
   <li><img src="images/p1.jpg" />简约时尚皮带男士手表一款69元<p class="endtime showtime" 
   value="1354365003"></p></li> 
   <li><img src="images/p2.jpg" />高强度无毒树脂材料榨汁器24元<p class="endtime showtime" 
   value="1350748800"></p></li> 
   <li><img src="images/p3.jpg" />茶香番茄/乌梅/杨梅0.48元<p class="endtime showtime" 
   value="1346487780"></p></li> 
   <li><img src="images/p4.jpg" />沙滩鞋男士户外凉鞋69元<p class="endtime showtime" 
   value="1367380800"></p></li> 
</ul>

上述html代码中,我们建立了一个列表,用于展示活动名称、图片和倒计时,关键的是我们在每个活动定义了结束时间:.endtime属性value的值,这个值是一串数字,表示自1970年1月1日以来的秒数,由后台(PHP)生成。比如结束时间2013-05-01 12:00可以通过PHP转换为1367380800秒,转换后的秒数可以用来接下来的jQuery计算倒计时。
CSS
我们需要给页面中的列表实际一个稍微好看点的外观。

.endtime{font-size:20px; font-family:"Microsoft Yahei"; color:#000} 
.prolist{margin:10px auto} 
.prolist li{float:left; width:320px; height:240px; margin:10px; font-size:14px; 
position:relative} 
.prolist li img{width:320px; height:198px;} 
.showtime{position:absolute; top:174px; height:24px; line-height:24px; 
background:#333; color:#fff; opacity:.6; display:none}

保存,预览页面效果,可以看到一个排列整齐的活动列表。
jQuery

var serverTime = * 1000; //服务器时间,毫秒数 
$(function(){ 
  var dateTime = new Date(); 
  var difference = dateTime.getTime() - serverTime; //客户端与服务器时间偏移量 
   
  setInterval(function(){ 
   $(".endtime").each(function(){ 
    var obj = $(this); 
    var endTime = new Date(parseInt(obj.attr('value')) * 1000); 
    var nowTime = new Date(); 
    var nMS=endTime.getTime() - nowTime.getTime() + difference; 
    var myD=Math.floor(nMS/(1000 * 60 * 60 * 24)); //天 
    var myH=Math.floor(nMS/(1000*60*60)) % 24; //小时 
    var myM=Math.floor(nMS/(1000*60)) % 60; //分钟 
    var myS=Math.floor(nMS/1000) % 60; //秒 
    var myMS=Math.floor(nMS/100) % 10; //拆分秒 
    if(myD>= 0){ 
      var str = myD+"天"+myH+"小时"+myM+"分"+myS+"."+myMS+"秒"; 
    }else{ 
      var str = "已结束!";  
    } 
    obj.html(str); 
   }); 
  }, 100); //每个0.1秒执行一次 
});

我们首先获取服务器时间,我们要将倒计时与服务器时间保持一致,这样一来每个客户端看到的倒计时是一样的,我们通过计算客户端与服务器的时间偏移量,来避免了因客户机器时间与服务器时间不一致而引起的倒计时不同步的麻烦。当然这个服务器时间需要使用服务端语言来获取,本文使用了PHP的time()函数获取的秒数,记得要乘以1000转换成毫秒数。
我们通过setInterval建立一个定时器,并且每个100毫秒执行一次setInterval里面的代码。
然后在定时器里,我们使用jQuery的each()方法,遍历页面中的列表,计算天、小时、分、秒。
因为javascript的getTime()函数获取的是毫秒数,所以计算过程中都要/1000,
我们并不想在一个页面将列表中所有的倒计时都显示出来,而需要用户将鼠标滑向列表中的图片才显示对应的倒计时,因此我们还需要加入以下辅助代码:

$(function(){ 
  $(".prolist li img").each(function(){ 
    var img = $(this); 
    img.hover(function(){ 
      img.next().show(); 
    },function(){ 
      img.next().hide(); 
    }); 
  }); 
});

最终效果图:

jQuery实现商品活动倒计时

以上就是关于倒计时的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
把textarea中字符串里含有的回车换行替换成&amp;lt;br&amp;gt;的javascript代码
Apr 20 Javascript
javascript学习笔记(十九) 节点的操作实现代码
Jun 20 Javascript
document.documentElement的一些使用技巧
Apr 18 Javascript
jQuery实现Twitter的自动文字补齐特效
Nov 28 Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
Nov 25 Javascript
jquery实现图片预加载
Dec 25 Javascript
深入解析JavaScript中函数的Currying柯里化
Mar 19 Javascript
原生js实现新闻列表展开/收起全文功能
Jan 20 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
Mar 28 jQuery
在create-react-app中使用sass的方法示例
Oct 01 Javascript
详解vue路由篇(动态路由、路由嵌套)
Jan 27 Javascript
js消除图片小游戏代码
Dec 11 Javascript
js如何打印object对象
Oct 16 #Javascript
JavaScript各类型的关系图解
Oct 16 #Javascript
js实现新浪微博首页效果
Oct 16 #Javascript
JS模拟Dialog弹出浮动框效果代码
Oct 16 #Javascript
JS实现仿腾讯微博无刷新删除微博效果代码
Oct 16 #Javascript
解决JS请求服务器gbk文件乱码的问题
Oct 16 #Javascript
jQuery实现简易的天天爱消除小游戏
Oct 16 #Javascript
You might like
php中的数组操作函数整理
2008/08/18 PHP
PHP实现时间轴函数代码
2011/10/08 PHP
php读取纯真ip数据库使用示例
2014/01/26 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
php实现贪吃蛇小游戏
2016/07/26 PHP
php数组遍历类与用法示例
2019/05/24 PHP
jQuery 插件 将this下的div轮番显示
2009/04/09 Javascript
javascript xml为数据源的下拉框控件
2009/07/07 Javascript
JavaScript实现N皇后问题算法谜题解答
2014/12/29 Javascript
在Mac OS下使用Node.js的简单教程
2015/06/24 Javascript
基于javascript实现动态显示当前系统时间
2016/01/28 Javascript
javascript每日必学之条件分支
2016/02/17 Javascript
通过Tabs方法基于easyUI+bootstrap制作工作站
2016/03/28 Javascript
Web程序员必备的7个JavaScript函数
2016/06/14 Javascript
微信小程序 canvas API详解及实例代码
2016/10/08 Javascript
Jquery实现上下移动和排序代码
2016/10/17 Javascript
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
关于redux-saga中take使用方法详解
2018/02/27 Javascript
nodejs微信开发之接入指南
2019/03/17 NodeJs
全面了解JavaScript的作用域链
2019/04/03 Javascript
如何在Vue.JS中使用图标组件
2020/08/04 Javascript
[02:16]2018年度CS GO最具人气选手-完美盛典
2018/12/16 DOTA
python多进程操作实例
2014/11/21 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
2018/05/30 Python
解决Python运行文件出现out of memory框的问题
2018/12/03 Python
Python增强赋值和共享引用注意事项小结
2019/05/28 Python
python 字典操作提取key,value的方法
2019/06/26 Python
pandas 选取行和列数据的方法详解
2019/08/08 Python
Visual Studio code 配置Python开发环境
2020/09/11 Python
python 对xml解析的示例
2021/02/27 Python
HTML5 video进入全屏和退出全屏的实现方法
2020/07/28 HTML / CSS
东方电视购物:东方CJ
2016/10/12 全球购物
私人房屋买卖协议书
2014/10/04 职场文书
2015年科协工作总结
2015/05/19 职场文书
餐厅营销的秘密:为什么老顾客会流水?
2019/08/08 职场文书
MySQL事务的ACID特性以及并发问题方案
2022/07/15 MySQL