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 相关文章推荐
JQuery UI皮肤定制
Jul 27 Javascript
JavaScript单元测试ABC
Apr 12 Javascript
JS 各种网页尺寸判断实例方法
Apr 18 Javascript
javascript控制在光标位置插入文字适合表情的插入
Jun 09 Javascript
基于jQuery实现的图片切换焦点图整理
Dec 07 Javascript
jQuery实现checkbox全选的方法
Jun 10 Javascript
js实现将选中内容分享到新浪或腾讯微博
Dec 16 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
Jun 10 Javascript
关于JS 预解释的相关理解
Jun 28 Javascript
JavaScript实现汉字转换为拼音的库文件示例
Dec 22 Javascript
利用forever和pm2部署node.js项目过程
May 10 Javascript
Javascript迭代、递推、穷举、递归常用算法实例讲解
Feb 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
PHP下几种删除目录的方法总结
2007/08/19 PHP
常用的php对象类型判断
2008/08/27 PHP
PHP随机字符串生成代码(包括大小写字母)
2013/06/24 PHP
PHP中的Streams详细介绍
2014/11/12 PHP
ThinkPHP数据操作方法总结
2015/09/28 PHP
PHP微信开发之有道翻译
2016/06/23 PHP
CI(CodeIgniter)框架实现图片上传的方法
2017/03/24 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
php命令行模式代码实例详解
2021/02/26 PHP
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
jQuery UI Dialog 创建友好的弹出对话框实现代码
2012/04/12 Javascript
jQuery移除tr无效的解决方法(tr是动态添加)
2014/09/22 Javascript
JavaScript中几种排序算法的简单实现
2015/07/29 Javascript
AngularJS Module方法详解
2015/12/08 Javascript
JavaScript的变量声明提升问题浅析(Hoisting)
2016/11/30 Javascript
jquery UI Datepicker时间控件冲突问题解决
2016/12/16 Javascript
jQuery+ajax实现修改密码验证功能实例详解
2017/07/06 jQuery
vue+vuex+axios实现登录、注册页权限拦截
2018/03/09 Javascript
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
2018/04/22 Javascript
vue的滚动条插件实现代码
2019/09/07 Javascript
js将日期格式转换为YYYY-MM-DD HH:MM:SS
2020/09/18 Javascript
python魔法方法-自定义序列详解
2016/07/21 Python
python turtle库画一个方格和圆实例
2019/06/27 Python
python安装后的目录在哪里
2020/06/21 Python
Python pexpect模块及shell脚本except原理解析
2020/08/03 Python
python读取图片颜色值并生成excel像素画的方法实例
2021/02/19 Python
HTML5制作3D爱心动画教程 献给女友浪漫的礼物
2014/11/05 HTML / CSS
h5页面唤起app如果没安装就跳转下载(iOS和Android)
2020/06/03 HTML / CSS
美国电视购物:QVC
2017/02/06 全球购物
Nixon手表英国官网:美国尼克松手表品牌
2020/02/10 全球购物
学校食堂采购员岗位职责
2013/12/05 职场文书
房屋分割离婚协议书范本
2014/12/01 职场文书
新课程改革心得体会
2016/01/22 职场文书
python opencv人脸识别考勤系统的完整源码
2021/04/26 Python
Python绘制地图神器folium的新人入门指南
2021/05/23 Python