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 相关文章推荐
Juqery Html(),append()等方法的Bug解决方法
Dec 13 Javascript
jquery表单验证使用插件formValidator
Nov 10 Javascript
对new functionName()定义一个函数的理解
May 22 Javascript
JavaScript返回当前会话cookie全部键值对照的方法
Apr 03 Javascript
ECMAScript6函数默认参数
Jun 12 Javascript
javascript实现页面刷新时自动清空表单并选中的方法
Jul 18 Javascript
javascript实现计时器的简单方法
Feb 21 Javascript
JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
Jun 17 Javascript
浅谈javascript中关于日期和时间的基础知识
Jul 13 Javascript
JavaScript实现按键精灵的原理分析
Feb 21 Javascript
JS中利用FileReader实现上传图片前本地预览功能
Mar 02 Javascript
让JavaScript代码更加精简的方法技巧
Jun 01 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
地球防卫队:陪着奥特曼打小怪兽的人类力量 那些经典队服
2020/03/08 日漫
用PHP+java实现自动新闻滚动窗口
2006/10/09 PHP
PHP连接Access数据库的方法小结
2013/06/20 PHP
thinkphp在模型中自动完成session赋值示例代码
2014/09/09 PHP
Laravel中间件实现原理详解
2016/10/09 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
总结PHP内存释放以及垃圾回收
2018/03/29 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
2020/05/02 PHP
一些有关检查数据的JS代码
2006/09/07 Javascript
图片img的src不变让浏览器重新加载实现方法
2013/03/29 Javascript
查看大图功能代码jquery版
2013/11/05 Javascript
使用javascript控制cookie显示和隐藏背景图
2014/02/12 Javascript
NodeJS学习笔记之Connect中间件模块(一)
2015/01/27 NodeJs
JS+CSS实现仿新浪微博搜索框的方法
2015/02/24 Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
2016/08/11 Javascript
js仿搜狐视频记录片列表展示效果
2020/05/30 Javascript
详解Vue中数组和对象更改后视图不刷新的问题
2018/09/21 Javascript
js实现图片粘贴到网页
2019/12/06 Javascript
python实现在目录中查找指定文件的方法
2014/11/11 Python
python实现应用程序在右键菜单中添加打开方式功能
2017/01/09 Python
Python实现从log日志中提取ip的方法【正则提取】
2018/03/31 Python
Python3.5.3下配置opencv3.2.0的操作方法
2018/04/02 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
Django框架创建mysql连接与使用示例
2019/07/29 Python
Python实现Wordcloud生成词云图的示例
2020/03/30 Python
HTML5梦幻之旅——炫丽的流星雨效果实现过程
2013/08/06 HTML / CSS
100%法国制造的游戏和玩具:Les Jouets Français
2021/03/02 全球购物
编写类String 的构造函数、析构函数和赋值函数
2012/09/09 面试题
自荐信要包含哪些内容
2013/11/06 职场文书
出纳工作岗位责任制
2014/02/02 职场文书
小学教师师德承诺书
2014/05/23 职场文书
女生节标语
2014/06/26 职场文书
机电专业毕业生自我鉴定2014
2014/10/04 职场文书
祝酒词范文
2015/08/12 职场文书
Pytorch中的数据集划分&正则化方法
2021/05/27 Python
CSS浮动引起的高度塌陷问题
2022/08/05 HTML / CSS