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 相关文章推荐
js 函数的副作用分析
Aug 23 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
Jan 06 Javascript
关于JavaScript命名空间的一些心得
Jun 07 Javascript
javascript实现五星评价代码(源码下载)
Aug 11 Javascript
JS实现网页顶部向下滑出的全国城市切换导航效果
Aug 22 Javascript
JavaScript简单实现鼠标移动切换图片的方法
Feb 23 Javascript
jquery仿QQ登录账号选择下拉框效果
Mar 22 Javascript
vue绑定class与行间样式style详解
Aug 16 Javascript
详解javascript中的babel到底是什么
Jun 21 Javascript
服务端预渲染之Nuxt(使用篇)
Apr 08 Javascript
VUE项目中加载已保存的笔记实例方法
Sep 14 Javascript
游戏开发中如何使用CocosCreator进行音效处理
Apr 14 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
redirect_uri参数错误的解决方法(必看)
2017/02/16 PHP
详解php中serialize()和unserialize()函数
2017/07/08 PHP
比较搞笑的js陷阱题
2010/02/07 Javascript
基于jQuery制作迷你背词汇工具
2010/07/27 Javascript
javascript控制swfObject应用介绍
2012/11/29 Javascript
JS获取页面input控件中所有text控件并追加样式属性
2013/02/25 Javascript
老生常谈JQuery data方法的使用
2016/09/09 Javascript
浅谈jquery高级方法描述与应用
2016/10/04 Javascript
用JavaScript实现让浏览器停止载入页面的方法
2017/01/19 Javascript
COM组件中调用JavaScript函数详解及实例
2017/02/23 Javascript
JS中IP地址与整数相互转换的实现代码
2017/04/10 Javascript
node.js的exports、module.exports与ES6的export、export default深入详解
2017/10/26 Javascript
微信小程序实现笑脸评分功能
2018/11/03 Javascript
ES6 Object属性新的写法实例小结
2019/06/25 Javascript
Python Web框架Flask中使用百度云存储BCS实例
2015/02/08 Python
详解Python数据分析--Pandas知识点
2019/03/23 Python
三步实现Django Paginator分页的方法
2019/06/11 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
2019/07/06 Python
使用 python pyautogui实现鼠标键盘控制功能
2019/08/04 Python
扩展Django admin的list_filter()可使用范围方法
2019/08/21 Python
Python爬虫实现“盗取”微信好友信息的方法分析
2019/09/16 Python
基于python实现蓝牙通信代码实例
2019/11/19 Python
Python如何对XML 解析
2020/06/28 Python
详解python with 上下文管理器
2020/09/02 Python
python实现按日期归档文件
2021/01/30 Python
全球领先的各类汽车配件零售商:Advance Auto Parts
2016/08/26 全球购物
ShellScript面试题一则-ShellScript编程
2014/03/05 面试题
商务主管岗位职责
2013/12/08 职场文书
办公室助理岗位职责
2013/12/25 职场文书
服装机修工岗位职责
2013/12/26 职场文书
本科毕业论文指导教师评语
2014/12/30 职场文书
个人的事迹材料怎么写
2019/04/24 职场文书
朋友圈早安励志语录!
2019/07/08 职场文书
纪念建国70周年演讲稿
2019/07/19 职场文书
django中websocket的具体使用
2022/01/22 Python
MySQL transaction事务安全示例讲解
2022/06/21 MySQL