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 相关文章推荐
利用XMLHTTP传递参数在另一页面执行并刷新本页
Oct 26 Javascript
toString()一个会自动调用的方法
Feb 08 Javascript
jQuery 源码分析笔记(7) Queue
Jun 19 Javascript
网页运行时提示对象不支持abigimage属性或方法
Aug 10 Javascript
javascript实现uploadify上传格式以及个数限制
Nov 23 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
Dec 20 Javascript
jQuery判断checkbox选中状态
May 12 Javascript
浅析script标签中的defer与async属性
Nov 30 Javascript
基于JavaScript实现自定义滚动条
Jan 25 Javascript
Node.js搭建小程序后台服务
Jan 03 Javascript
webpack proxy 使用(代理的使用)
Jan 10 Javascript
redux处理异步action解决方案
Mar 22 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
?生?D片??C字串
2006/12/06 PHP
PHP 数组遍历顺序理解
2009/09/09 PHP
php5.3 注意事项说明
2013/07/01 PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
2015/07/10 PHP
解析WordPress中的post_class与get_post_class函数
2016/01/04 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
一个简单安全的PHP验证码类 附调用方法
2016/06/24 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
PHP分页显示的方法分析【附PHP通用分页类】
2018/05/10 PHP
脚本吧 - 幻宇工作室用到js,超强推荐share.js
2006/12/23 Javascript
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
JS解析XML的实现代码
2009/11/12 Javascript
Jquery ajaxsubmit上传图片实现代码
2010/11/04 Javascript
zTree插件之多选下拉菜单实例代码
2013/11/06 Javascript
由浅入深讲解Javascript继承机制与simple-inheritance源码分析
2015/12/13 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
js实现5秒倒计时重新发送短信功能
2017/02/05 Javascript
基于react后端渲染模板引擎noox发布使用
2018/01/11 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
简单了解JS打开url的方法
2020/02/21 Javascript
jquery绑定事件 bind和on的用法与区别分析
2020/05/22 jQuery
python实现五子棋人机对战游戏
2020/03/25 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
2019/06/19 Python
简单了解python的内存管理机制
2019/07/08 Python
Python完成哈夫曼树编码过程及原理详解
2019/07/29 Python
python 第三方库paramiko的常用方式
2021/02/20 Python
CSS3实现时间轴效果
2016/07/11 HTML / CSS
详解如何使用CSS3中的结构伪类选择器和伪元素选择器
2020/01/06 HTML / CSS
.NET面试题:什么是值类型和引用类型
2016/01/12 面试题
Java基础类库面试题
2013/09/04 面试题
试用期转正鉴定评语
2014/01/27 职场文书
人身损害赔偿协议书范本
2014/09/27 职场文书
技术入股合作协议书
2014/10/07 职场文书
2015年七一建党节活动方案
2015/05/05 职场文书
python requests模块的使用示例
2021/04/07 Python
教你用Python matplotlib库制作简单的动画
2021/06/11 Python