微信小程序实现团购或秒杀批量倒计时


Posted in Javascript onNovember 01, 2020

本文实例为大家分享了微信小程序实现批量倒计时的具体代码,供大家参考,具体内容如下

效果图

微信小程序实现团购或秒杀批量倒计时

实现思路

微信小程序实现倒计时,可以将倒计时的时间进行每一秒的计算和渲染!

JS

  1. 模拟商品列表数据 goodsList;
  2. 在 onLoad 周期函数中对活动结束时间进行提取;
  3. 建立时间格式化函数 timeFormat;
  4. 建立倒计时函数 countDown;
  5. 在 onLoad 周期函数的提取结尾执行倒计时函数 countDown。

倒计时函数详解

  1. 获取当前时间,同时得到活动结束时间数组;
  2. 循环活动结束时间数组,计算每个商品活动结束时间的倒计时天、时、分、秒;
  3. 用 setData 方法刷新数据;
  4. 每个一秒执行一次倒计时函数 setTimeout(this.countDown,1000);
let goodsList = [
 {actEndTime: '2018-05-01 10:00:43'},
 {actEndTime: '2018-04-01 11:00:00'},
 {actEndTime: '2018-06-01 12:45:56'},
 {actEndTime: '2018-07-01 15:00:23'},
 {actEndTime: '2018-05-23 17:00:22'},
 {actEndTime: '2018-05-14 19:00:44'},
 {actEndTime: '2018-05-21 21:00:34'},
 {actEndTime: '2018-06-17 09:00:37'},
 {actEndTime: '2018-03-21 05:00:59'},
 {actEndTime: '2018-04-19 07:00:48'},
 {actEndTime: '2018-04-28 03:00:11'}
]
Page({
 data: {
 countDownList: [],
 actEndTimeList: []
 },
 onLoad(){
 let endTimeList = [];
 // 将活动的结束时间参数提成一个单独的数组,方便操作
 goodsList.forEach(o => {endTimeList.push(o.actEndTime)})
 this.setData({ actEndTimeList: endTimeList});
 // 执行倒计时函数
 this.countDown();
 },
 timeFormat(param){//小于10的格式化函数
 return param < 10 ? '0' + param : param; 
 },
 countDown(){//倒计时函数
 // 获取当前时间,同时得到活动结束时间数组
 let newTime = new Date().getTime();
 let endTimeList = this.data.actEndTimeList;
 let countDownArr = [];

 // 对结束时间进行处理渲染到页面
 endTimeList.forEach(o => {
 let endTime = new Date(o).getTime();
 let obj = null;
 // 如果活动未结束,对时间进行处理
 if (endTime - newTime > 0){
 let time = (endTime - newTime) / 1000;
 // 获取天、时、分、秒
 let day = parseInt(time / (60 * 60 * 24));
 let hou = parseInt(time % (60 * 60 * 24) / 3600);
 let min = parseInt(time % (60 * 60 * 24) % 3600 / 60);
 let sec = parseInt(time % (60 * 60 * 24) % 3600 % 60);
 obj = {
  day: this.timeFormat(day),
  hou: this.timeFormat(hou),
  min: this.timeFormat(min),
  sec: this.timeFormat(sec)
 }
 }else{//活动已结束,全部设置为'00'
 obj = {
  day: '00',
  hou: '00',
  min: '00',
  sec: '00'
 }
 }
 countDownArr.push(obj);
 })
 // 渲染,然后每隔一秒执行一次倒计时函数
 this.setData({ countDownList: countDownArr})
 setTimeout(this.countDown,1000);
 }
})

WXML

简单的布局和居中显示。

<view class='tui-countdown-content' wx:for="{{countDownList}}" wx:key="countDownList">
 剩余
 <text class='tui-conutdown-box'>{{item.day}}</text>天
 <text class='tui-conutdown-box'>{{item.hou}}</text>时
 <text class='tui-conutdown-box'>{{item.min}}</text>分
 <text class='tui-conutdown-box tui-countdown-bg'>{{item.sec}}</text>秒
</view>

WXSS

page{background-color: #eee;}
.tui-countdown-content{
 height: 50px;
 line-height: 50px;
 text-align: center;
 background-color: #fff;
 margin-top: 15px;
 padding: 0 15px;
 font-size: 18px;
}
.tui-conutdown-box{
 display: inline-block;
 height: 26px;
 width: 26px;
 line-height: 26px;
 text-align: center;
 background-color: #000;
 color: #fff;
 margin: 0 5px;
}
.tui-countdown-bg{
 background-color: #DF0101;
}

实际应用效果图

由于活动已结束,所以时间全部为'00'

微信小程序实现团购或秒杀批量倒计时

总结

由于微信小程序的数据处理比HTML的更加方便快捷,所以在实现相同效果的时候需要对应的转化一下思路,可能更好的解决问题。

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

Javascript 相关文章推荐
JS按位非(~)运算符与~~运算符的理解分析
Jul 31 Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
Aug 10 Javascript
JSON与XML的区别对比及案例应用
Nov 11 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
Jan 22 Javascript
bootstrap选项卡扩展功能详解
Jun 14 Javascript
jqgrid实现简单的单行编辑功能
Sep 30 Javascript
vue2.0使用swiper组件实现轮播效果
Nov 27 Javascript
angular4 共享服务在多个组件中数据通信的示例
Mar 30 Javascript
Vue利用canvas实现移动端手写板的方法
May 03 Javascript
微信小程序实现音乐播放器
Nov 20 Javascript
js中script的上下放置区别,Dom的增删改创建操作实例分析
Dec 16 Javascript
多种类型jQuery网页验证码插件代码实例
Jan 09 jQuery
微信小程序实现倒计时补零功能
Jul 09 #Javascript
Angular6中使用Swiper的方法示例
Jul 09 #Javascript
微信小程序实现自定义picker选择器弹窗内容
May 26 #Javascript
微信小程序实现漂亮的弹窗效果
May 26 #Javascript
Angular通过指令动态添加组件问题
Jul 09 #Javascript
js实现左右两侧浮动广告
Jul 09 #Javascript
vue-router中scrollBehavior的巧妙用法
Jul 09 #Javascript
You might like
php面向对象全攻略 (三)特殊的引用“$this”的使用
2009/09/30 PHP
PHP实现的迷你漂流瓶
2015/07/29 PHP
PHP判断字符串长度的两种方法很实用
2015/09/22 PHP
php计算年龄精准到年月日
2015/11/17 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
简单实现php上传文件功能
2017/09/21 PHP
jQuery的三种$()
2009/12/30 Javascript
javascript 匿名函数的理解(透彻版)
2010/01/28 Javascript
jQuery基础知识filter()和find()实例说明
2010/07/06 Javascript
Javascript 自适应高度的Tab选项卡
2011/04/05 Javascript
JavaScript高级程序设计 XML、Ajax 学习笔记
2011/09/10 Javascript
JQuery设置获取下拉菜单某个选项的值(比较全)
2014/08/05 Javascript
js中string转int把String类型转化成int类型
2014/08/13 Javascript
Js控制滑轮左右滑动实例
2015/02/13 Javascript
js实现可得到不同颜色值的颜色选择器实例
2015/02/28 Javascript
jQuery Validate验证框架经典大全
2015/09/23 Javascript
Vue.js结合bootstrap实现分页控件
2017/03/10 Javascript
js实现鼠标跟随运动效果
2020/08/02 Javascript
ES6 新增的创建数组的方法(小结)
2019/08/01 Javascript
基于vue实现简易打地鼠游戏
2020/08/21 Javascript
vue 页面跳转的实现方式
2021/01/12 Vue.js
Python通过future处理并发问题
2017/10/17 Python
python中yaml配置文件模块的使用详解
2018/04/27 Python
对python的文件内注释 help注释方法
2018/05/23 Python
Python多线程原理与用法详解
2018/08/20 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
2019/02/19 Python
Python利用matplotlib绘制散点图的新手教程
2020/11/05 Python
销售主管竞聘书
2014/03/31 职场文书
考试诚信承诺书
2014/05/23 职场文书
大学应届毕业生求职信
2014/05/24 职场文书
宣传标语大全
2014/07/01 职场文书
小学数学教研活动总结
2014/07/01 职场文书
毕业生个人自荐书
2015/03/05 职场文书
餐厅保洁员岗位职责
2015/04/10 职场文书
聘任协议书(挂靠)
2015/09/21 职场文书
pycharm2021激活码使用教程(永久激活亲测可用)
2021/03/30 Python