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 相关文章推荐
document 和 document.all 分别什么时候用
Jun 22 Javascript
JavaScript 继承机制的实现(待续)
May 18 Javascript
javascript学习笔记(十五) js间歇调用和超时调用
Jun 20 Javascript
基于Javascript实现倒计时功能
Feb 22 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
Sep 13 Javascript
微信小程序 九宫格实例代码
Jan 21 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
Mar 01 Javascript
js实现分页功能
May 24 Javascript
解决webpack无法通过IP地址访问localhost的问题
Feb 22 Javascript
vue使用pdfjs显示PDF可复制的实现方法
Dec 14 Javascript
vue.js指令v-for使用以及下标索引的获取
Jan 31 Javascript
JS代码检查工具ESLint介绍与使用方法
Feb 04 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
为什么《星际争霸》是测试人工智能的理想战场
2019/12/03 星际争霸
mysq GBKl乱码
2006/11/28 PHP
php批量更改数据库表前缀实现方法
2013/10/26 PHP
让PHP显示Facebook的粉丝数量方法
2014/01/08 PHP
php模拟post上传图片实现代码
2016/06/24 PHP
PHP记录和读取JSON格式日志文件
2016/07/07 PHP
Laravel框架模型的创建及模型对数据操作示例
2019/05/07 PHP
extjs 列表框(multiselect)的动态添加列表项的方法
2009/07/31 Javascript
JavaScript 事件的一些重要说明
2009/10/25 Javascript
利用jQuery 实现GridView异步排序、分页的代码
2010/02/06 Javascript
js弹出层之1:JQuery.Boxy (二)
2011/10/06 Javascript
javascript常见数据验证插件大全
2015/08/03 Javascript
jQuery鼠标悬浮链接弹出跟随图片实例代码
2016/01/08 Javascript
使用jquery.qrcode.min.js实现中文转化二维码
2016/03/11 Javascript
详解javascript中对数据格式化的思考
2017/01/23 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
2018/10/25 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
JS JQuery获取data-*属性值方法解析
2020/09/01 jQuery
python数据结构之二叉树的统计与转换实例
2014/04/29 Python
用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
2014/07/14 Python
Python 字符串大小写转换的简单实例
2017/01/21 Python
通过Python模块filecmp 对文件比较的实现方法
2018/06/29 Python
pytorch: tensor类型的构建与相互转换实例
2018/07/26 Python
Python遍历文件夹 处理json文件的方法
2019/01/22 Python
python Tkinter版学生管理系统
2019/02/20 Python
使用keras实现非线性回归(两种加激活函数的方式)
2020/07/05 Python
美国在线鲜花速递:ProFlowers
2017/01/05 全球购物
英国评分最高的女性剃须刀订阅盒:FFS Beauty
2018/01/25 全球购物
如何找出EMP表里面SALARY第N高的employee
2013/12/05 面试题
违反学校规定检讨书
2014/01/18 职场文书
中华在我心中演讲稿
2014/09/13 职场文书
幼儿园中班教师个人总结
2015/02/05 职场文书
防溺水安全教育主题班会
2015/08/12 职场文书
修改MySQL的数据库引擎为INNODB的方法
2021/05/26 MySQL