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


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 相关文章推荐
从JavaScript 到 JQuery (1)学习小结
Feb 12 Javascript
为Extjs加加速(javascript加速)
Aug 19 Javascript
理解Javascript_10_对象模型
Oct 16 Javascript
js 创建书签小工具之理论
Feb 25 Javascript
jquery特效 点击展示与隐藏全文
Dec 09 Javascript
微信小程序 开发经验整理
Feb 15 Javascript
vue2.X组件学习心得(新手必看篇)
Jul 05 Javascript
基于input框覆盖掉数字英文的实例讲解
Jul 21 Javascript
AngularJS service之select下拉菜单效果
Jul 28 Javascript
其实你可以少写点if else与switch(推荐)
Jan 10 Javascript
react antd表格中渲染一张或多张图片的实例
Oct 28 Javascript
详解Anyscript开发指南绕过typescript类型检查
Sep 23 Javascript
微信小程序实现倒计时补零功能
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
用Socket发送电子邮件
2006/10/09 PHP
针对初学PHP者的疑难问答(1)
2006/10/09 PHP
php发送http请求的常用方法分析
2016/11/08 PHP
javascript RadioButtonList获取选中值
2009/04/09 Javascript
js不完美解决click和dblclick事件冲突问题
2012/07/16 Javascript
IE8提示Invalid procedure call or argument 异常的解决方法
2012/09/30 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
js实现右下角提示框的方法
2015/02/03 Javascript
jQuery左侧大图右侧小图焦点图幻灯切换代码分享
2015/08/19 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
2015/12/17 Javascript
AngularJS service之select下拉菜单效果
2017/07/28 Javascript
Layer+Echarts构建弹出层折线图的方法
2019/09/25 Javascript
js 图片懒加载的实现
2020/10/21 Javascript
vue穿梭框实现上下移动
2021/01/29 Vue.js
[02:28]DOTA2 2015国际邀请赛中国区预选赛首日现场百态
2015/05/26 DOTA
[03:11]DOTA2上海特锦赛小组赛第一日recap精彩回顾
2016/02/28 DOTA
[02:27]2018DOTA2亚洲邀请赛赛前采访-OpTic
2018/04/03 DOTA
[36:33]完美世界DOTA2联赛循环赛 Matador vs Forest 第一场 11.06
2020/11/06 DOTA
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
利用Python中的pandas库对cdn日志进行分析详解
2017/03/07 Python
微信跳一跳python自动代码解读1.0
2018/01/12 Python
Django进阶之CSRF的解决
2018/08/01 Python
美国在线旅行社:Crystal Travel
2018/09/11 全球购物
Lookfantastic俄罗斯:欧洲在线化妆品零售商
2019/08/06 全球购物
毕业设计计划书
2014/01/09 职场文书
黄河象教学反思
2014/02/10 职场文书
临床医师个人自我评价
2014/04/06 职场文书
医疗专业毕业生求职信
2014/08/28 职场文书
小学少先队辅导员述职报告
2015/01/10 职场文书
汽车车尾标语大全
2015/08/11 职场文书
任命书格式模板
2015/09/22 职场文书
python中os.path.join()函数实例用法
2021/05/26 Python
JavaScript如何优化逻辑判断代码详解
2021/06/08 Javascript
详解CSS中的特指度和层叠问题
2021/07/15 HTML / CSS
68行Python代码实现带难度升级的贪吃蛇
2022/01/18 Python
Redis+Lua脚本实现计数器接口防刷功能(升级版)
2022/02/12 Redis