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 相关文章推荐
一句话JavaScript表单验证代码
Aug 02 Javascript
jquery 简单应用示例总结
Aug 09 Javascript
javascript获取flash版本号的方法
Nov 20 Javascript
JavaScript实现复制内容到粘贴板代码
Mar 31 Javascript
省市区三级联动jquery实现代码
Apr 15 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
Jan 19 Javascript
JavaScript字符集编码与解码详谈
Feb 02 Javascript
javascript中的面向对象
Mar 30 Javascript
详解vue.js全局组件和局部组件
Apr 10 Javascript
vue.draggable实现表格拖拽排序效果
Dec 01 Javascript
node.js ws模块搭建websocket服务端的方法示例
Apr 25 Javascript
前端 javascript 实现文件下载的示例
Nov 24 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中使用explode查找某个字符是否存在的方法
2011/07/12 PHP
PHP实现的比较完善的购物车类
2014/12/02 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
2019/09/26 PHP
jquery 插件开发方法小结
2009/10/23 Javascript
js操作时间(年-月-日 时-分-秒 星期几)
2010/06/20 Javascript
基于jquery实现拆分姓名的方法(纯JS版)
2013/05/08 Javascript
JSON传递bool类型数据的处理方式介绍
2013/09/18 Javascript
javascript鼠标右键菜单自定义效果
2020/12/08 Javascript
AngularJS基础 ng-init 指令简单示例
2016/08/02 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
2016/12/08 Javascript
微信小程序关键字变色实现代码实例
2019/12/13 Javascript
学前端,css与javascript重难点浅析
2020/06/11 Javascript
如何使用three.js 制作一个三维的推箱子游戏
2020/07/29 Javascript
jQuery实现日历效果
2020/09/11 jQuery
vue 授权获取微信openId操作
2020/11/13 Javascript
在漏洞利用Python代码真的很爽
2007/08/26 Python
Python复制文件操作实例详解
2015/11/10 Python
python嵌套字典比较值与取值的实现示例
2017/11/03 Python
Java及python正则表达式详解
2017/12/27 Python
python调用staf自动化框架的方法
2018/12/26 Python
PYQT5设置textEdit自动滚屏的方法
2019/06/14 Python
对PyQt5中树结构的实现方法详解
2019/06/17 Python
django基于cors解决跨域请求问题详解
2019/08/06 Python
wxpython绘制音频效果
2019/11/18 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
2020/02/12 Python
Python判断字符串是否为空和null方法实例
2020/04/26 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
2020/05/23 Python
Canvas图片分割效果的实现
2019/07/29 HTML / CSS
详解如何在登录过期后跳出Ifram框架
2020/09/10 HTML / CSS
主键(Primary Key)约束和唯一性(UNIQUE)约束的区别
2013/05/29 面试题
国外软件测试工程师面试题
2016/12/09 面试题
中式结婚主持词
2014/03/14 职场文书
大学活动总结范文
2014/04/29 职场文书
羽毛球比赛策划方案
2014/06/13 职场文书
win10电脑右下角输入法图标不见了?Win10右下角不显示输入法的解决方法
2022/07/23 数码科技