js实现页面多个日期时间倒计时效果


Posted in Javascript onJune 20, 2019

js的日期倒计时在日常项目中还是比较常用的,活动、拼团功能最为常见,先分析最要是处理好日期函数,然后一个页面上有多个倒计时情况下的方法;

来,先看下 拼多多 的拼单倒计时的效果:

js实现页面多个日期时间倒计时效果

那么,先上个代码吧:

案例效果:

js实现页面多个日期时间倒计时效果

<style>
  .mytime{ line-height: 40px; width: 300px; margin: 0 auto;}
 </style>

<div class="mytime jsTime" data-time="2019-04-01 16:58:00">时间1</div>
<div class="mytime jsTime" data-time="2019-04-04 18:00:02">时间2</div>
<div class="mytime jsTime" data-time="2019-04-05 19:01:31">时间3</div>
<div class="mytime jsTime" data-time="2019-04-06 05:05:15">时间4</div>
<div class="mytime jsTime" data-time="2019-04-07 09:01:43">时间5</div>
<hr>
<div class="mytime jsTime2" data-time="2019-04-08 16:30:05">时间1</div>
<div class="mytime jsTime2" data-time="2019-04-09 14:01:22">时间2</div>
<div class="mytime jsTime2" data-time="2019-04-10 18:06:25">时间3</div>
<div class="mytime jsTime2" data-time="2019-04-11 22:07:19">时间4</div>
<div class="mytime jsTime2" data-time="2019-04-12 23:12:38">时间5</div>
<!-- 方法1 -->
<script>
 const countdown = {
  domList : document.querySelectorAll('.jsTime'),
  formatNumber(n){
   // return n.toString().padStart(2, '0'); // 用padStart方法要注意兼容问题
   n = n.toString();
   return n[1] ? n : '0' + n;
  },
  setTime(dom){
   //获取设置的时间 如:2019-3-28 14:00:00 ios系统得加正则.replace(/\-/g, '/');
   const leftTime = new Date(dom.getAttribute('data-time').replace(/\-/g, '/')) - new Date();
   if (leftTime >= 0) {
    const d = Math.floor(leftTime / 1000 / 60 / 60 / 24);
    const h = Math.floor(leftTime / 1000 / 60 / 60 % 24);
    const m = Math.floor(leftTime / 1000 / 60 % 60);
    const s = Math.floor(leftTime / 1000 % 60);
    dom.innerHTML = `剩余${ d > 0 ? d + '天' : '' }${ [h, m, s].map(this.formatNumber).join(':') }`;
   } else {
    clearInterval(dom.$timer);
    dom.innerHTML = '拼团已结束';
   }
  },
  start(){
   this.domList.forEach((dom) => {
    this.setTime(dom);
    dom.$timer = setInterval(() => {
     this.setTime(dom);
    }, 1e3);
   });
  },
 };
 countdown.start();
</script>
<!-- 方法2 -->
<script>
 //时间格式处理
 const formatNumber = n => {
 n = n.toString();
 return n[1] ? n : '0' + n;
 };
 //团购倒计时
 const teamCountTime = (obj) => {
 var timer = null;
 function fn(){
  //获取设置的时间 如:2019-3-28 14:00:00 ios系统得加正则.replace(/\-/g, '/');
  var setTime = obj.getAttribute('data-time').replace(/\-/g, '/');
  //获取当前时间
  var date = new Date(),
   now  = date.getTime(),
   endDate = new Date(setTime),
   end  = endDate.getTime();
  //时间差
  var leftTime = end - now;
  //d,h,m,s 天时分秒
  var d, h,m,s;
  var otime = '';
  if (leftTime >= 0) {
  d = Math.floor(leftTime / 1000 / 60 / 60 / 24);
  h = Math.floor(leftTime / 1000 / 60 / 60 % 24);
  m = Math.floor(leftTime / 1000 / 60 % 60);
  s = Math.floor(leftTime / 1000 % 60);
  if (d <= 0) {
   otime = [h, m, s].map(formatNumber).join(':');
  } else {
   otime = d + '天' + [h, m, s].map(formatNumber).join(':');
  }
  obj.innerHTML = '剩余' + otime;
  //
  timer = setTimeout(fn, 1e3);
  } else {
  clearTimeout(timer);
  obj.innerHTML = '拼团已结束';
  }
 }
 fn();
 };
 let jsTimes = document.querySelectorAll('.jsTime2');
 jsTimes.forEach((obj) => {
 teamCountTime(obj);
 });
</script>

具体代码可访问本人github

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
onpropertypchange
Jul 01 Javascript
IE与firefox之jquery用法区别
Oct 03 Javascript
百度留言本js 大家可以参考下
Oct 13 Javascript
JQuery下关于$.Ready()的分析
Dec 13 Javascript
Script的加载方法小结
Jan 12 Javascript
javascript针对DOM的应用分析(二)
Apr 15 Javascript
jquery表格内容筛选实现思路及代码
Apr 16 Javascript
一个判断抢购时间是否到达的简单的js函数
Jun 23 Javascript
常用的JS验证和函数汇总
Dec 23 Javascript
Angular.js 实现数字转换汉字实例代码
Jul 14 Javascript
学习vue.js中class与style绑定
Dec 03 Javascript
小程序如何获取多个formId实现详解
Sep 20 Javascript
vue实现绑定事件的方法实例代码详解
Jun 20 #Javascript
javascript实现5秒倒计时并跳转功能
Jun 20 #Javascript
JS实现的简单tab切换功能完整示例
Jun 20 #Javascript
Vue 页面权限控制和登陆验证功能的实例代码
Jun 20 #Javascript
jQuery实现文本显示一段时间后隐藏的方法分析
Jun 20 #jQuery
javascript获取select值的方法完整实例
Jun 20 #Javascript
node基于async/await对mysql进行封装
Jun 20 #Javascript
You might like
单位速度在实战中的运用
2020/03/04 星际争霸
thinkPHP2.1自定义标签库的导入方法详解
2016/07/20 PHP
PHP检测数据类型的几种方法(总结)
2017/03/04 PHP
PHP简单留言本功能实现代码
2017/06/09 PHP
Django 中 cookie的使用
2017/08/17 PHP
关于COOKIE个数与大小的问题
2011/01/17 Javascript
Eval and new funciton not the same thing
2012/12/27 Javascript
查找页面中所有类为test的结点的方法
2014/03/28 Javascript
js监听鼠标点击和键盘点击事件并自动跳转页面
2014/09/24 Javascript
node.js中的fs.fchmodSync方法使用说明
2014/12/16 Javascript
jquery-tips悬浮提示插件分享
2015/07/31 Javascript
基于ajax实现文件上传并显示进度条
2015/08/03 Javascript
新入门node.js必须要知道的概念(必看篇)
2016/08/10 Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
2016/11/17 Javascript
Nodejs进阶:核心模块net入门学习与实例讲解
2016/11/21 NodeJs
mock.js实现模拟生成假数据功能示例
2019/01/15 Javascript
VUE组件中的 Drawer 抽屉实现代码
2019/08/06 Javascript
python3 与python2 异常处理的区别与联系
2016/06/19 Python
Python 查找字符在字符串中的位置实例
2018/05/02 Python
Python 编码规范(Google Python Style Guide)
2018/05/05 Python
Python JSON格式数据的提取和保存的实现
2019/03/22 Python
Python While循环语句实例演示及原理解析
2020/01/03 Python
基于Python爬取爱奇艺资源过程解析
2020/03/02 Python
Python sorted对list和dict排序
2020/06/09 Python
瑞典最好的运动鞋专卖店:Sneakersnstuff
2016/08/29 全球购物
美国高端婴童品牌:Hanna Andersson
2016/10/30 全球购物
携程旅行网:中国领先的在线旅行服务公司
2017/02/17 全球购物
Shop Apotheke瑞士:您的健康与美容网上商店
2019/10/09 全球购物
使用索引(Index)有哪些需要考虑的因素
2016/10/19 面试题
社会实践心得体会
2014/01/03 职场文书
三好学生先进事迹材料
2014/08/28 职场文书
2015年万圣节活动总结
2015/03/24 职场文书
2015年话务员工作总结
2015/04/29 职场文书
2015年手术室工作总结
2015/05/11 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
汤姆叔叔的小屋读书笔记
2015/06/30 职场文书