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


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中关于indexOf的使用方法与问题小结
Aug 05 Javascript
javascript复制对象使用说明
Jun 28 Javascript
Jqgrid之强大的表格插件应用
Dec 02 Javascript
js+html5实现canvas绘制椭圆形图案的方法
May 21 Javascript
js中用cssText设置css样式的简单方法
Sep 19 Javascript
vue2组件实现懒加载浅析
Mar 29 Javascript
表格展示利器 Bootstrap Table实例代码
Sep 06 Javascript
Vue2.0用户权限控制解决方案
Nov 29 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
Jul 03 Javascript
JS实现数组去重,显示重复元素及个数的方法示例
Jan 21 Javascript
Js Snowflake(雪花算法)生成随机ID的实现方法
Aug 26 Javascript
DWR内存兼容及无法调用问题解决方案
Oct 16 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
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
PHP实现图片压缩
2020/09/09 PHP
基于PHP实现微信小程序客服消息功能
2019/08/12 PHP
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
2010/03/16 Javascript
javascript获取和判断浏览器窗口、屏幕、网页的高度、宽度等
2014/05/08 Javascript
JavaScript的作用域和块级作用域概念理解
2014/09/21 Javascript
js判断图片加载完成后获取图片实际宽高的方法
2016/02/25 Javascript
JavaScript随机打乱数组顺序之随机洗牌算法
2016/08/02 Javascript
Three.js学习之Lamber材质和Phong材质
2016/08/04 Javascript
JS实现Ajax的方法分析
2016/12/20 Javascript
jQuery简单绑定单个事件的方法示例
2017/06/10 jQuery
vue父子组件通信的高级用法示例
2019/08/29 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
python字符串连接方式汇总
2014/08/21 Python
django实现登录时候输入密码错误5次锁定用户十分钟
2017/11/05 Python
Python标准库inspect的具体使用方法
2017/12/06 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
2019/02/07 Python
pyqt5 使用label控件实时显示时间的实例
2019/06/14 Python
Python Pandas 获取列匹配特定值的行的索引问题
2019/07/01 Python
关于numpy中eye和identity的区别详解
2019/11/29 Python
python实现上传文件到linux指定目录的方法
2020/01/03 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
2020/04/23 Python
基于python实现生成指定大小txt文档
2020/07/20 Python
python使用yaml 管理selenium元素的示例
2020/12/01 Python
html5使用Drag事件编辑器拖拽上传图片的示例代码
2017/08/22 HTML / CSS
用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?
2014/01/05 面试题
毕业研究生的自我鉴定
2013/11/30 职场文书
办公设备采购方案
2014/03/16 职场文书
库房保管员岗位职责
2014/04/07 职场文书
小学生竞选班干部演讲稿
2014/04/24 职场文书
春季防火方案
2014/05/10 职场文书
小学教师工作总结2015
2015/04/07 职场文书
2015大学迎新晚会主持词
2015/07/16 职场文书
2015年幼儿园国庆节活动总结
2015/07/30 职场文书
详解nginx location指令
2022/01/18 Servers
SpringBoot2零基础到精通之异常处理与web原生组件注入
2022/03/22 Java/Android