uniapp微信小程序实现一个页面多个倒计时


Posted in Javascript onNovember 01, 2020

本文实例为大家分享了uniapp实现一个页面多个倒计时的具体代码,供大家参考,具体内容如下

设计图(需求)

uniapp微信小程序实现一个页面多个倒计时

结构

<view class="group-list" v-for="item in message" :key="item.productId">
 <view class="group-img" @click="navTo">
 <image :src="item.productPicture"></image>
 </view>
 <view class="group-info">
 <view class="product-name">{{ item.productName }}</view>
 <view class="product-price">
 <text class="discounts">¥{{ item.productCurrentPrice }}</text>
 <text class="original">¥{{ item.productMarketPrice }}</text>
 </view>
 <view class="group-partner">
 <scroll-view scroll-x>
 <view class="user-img">
 <view v-for="(single, index) in item.avatarList" :key="index">
 <image :src="single"></image>
 </view>
 <view v-for="i in item.stillMissingNumber" :key="i">
 <image src="../../static/ssll-img/more.png"></image>
 </view>
 </view>
 </scroll-view>
 <button open-type="share">邀请好友</button>
 </view>
 <view class="clock">
 <text>拼团剩余:</text>
 <!-- 绑定倒计时 -->
 <text>{{ item.end_time1 }}</text> 
 </view>
 </view>
</view>

js

export default {
 data() {
 return {
 timeData: '', //存放每条数据的处理好的倒计时
 timer: '', //用来清除定时器
 message: [] //接口请求返回的数据
 }
 },
 onUnload(){ //卸载页面清除定时器
 clearInterval(this.timer) 
 },
 methods: {
 getTimeList(){ 
 let that = this
 that.message.forEach((item) =>{
  var nowdate = new Date().getTime() //获取当前时间毫秒数
  var time = item.productExpiredTime.replace(new RegExp("-", "gm"), "/") //ios不能识别日期格式中的 "-" ; .productExpiredTime是接口返回的名称
  var timesp = time.split('.')[0] //此处是因为我们接口返回的时间格式是这样:"2019-12-31 11:00:00.0"
  var enddate = new Date(timesp).getTime() //处理好格式之后获取结束时间的毫秒数
  var totaltime = enddate - nowdate //获取时间差
  that.totaltime(totaltime) //这是下面封装的方法,将毫秒数处理成"xx时xx分xx秒"
  item.end_time1 = that.timeData //处理好的单个时间安排到item上(重要)
 })
 this.message = that.message //全部处理好的数据重新赋值
 },
 
 totaltime(a){ //计算单个剩余时间
 let totaltime = a
 let that = this
  var h, m, s, d
  function test(num) {
  if (num < 10) {
   num = "0" + num 
  }
  return num
  }
  
 if (totaltime > 0) {
  d = Math.floor(totaltime / 1000 / 60 / 60 / 24) * 24
  h = Math.floor(totaltime / 1000 / 60 / 60 % 24)
  m = Math.floor(totaltime / 1000 / 60 % 60)
  s = Math.floor(totaltime / 1000 % 60)
  //获取时分秒
  h = d + h
  h = test(h)
  m = test(m)
  s = test(s)
  
  this.timeData =`${h}时 : ${m}分 : ${s}秒` // 每个时间的显示格式
  
 } else {
  
  this.timeData = `00 : 00 : 00` 
  
 }
 },
 //以下请求此页面需要的数据
 getUserGroupList(接口参数) {
 this.$ajax({
 url: 'xxx/xxx/xxxxxx',
 data: {接口参数},
 success: res => {
 var that = this
 let data = res.data.groups
 if (data.length === 0) {
 this.$api.msg('暂时您还没有参团信息!')
 setTimeout (function() {
 uni.navigateBack({ //返回上一页
  delta: 1
 })
 },1500)
 } else {
 this.message = [...that.message, ...res.data.groups] //合并
 //数据返回成功之后再调计时器,防止异步
 //that.getTimeList()
 var timer = setInterval(function () {
  that.getTimeList()
 }, 1000)
 this.timer = timer
 }
 }
 }
}

至此,一个页面多个倒计时就完成了, 记录学习。

为大家推荐现在关注度比较高的微信小程序教程一篇:《微信小程序开发教程》小编为大家精心整理的,希望喜欢。

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

Javascript 相关文章推荐
javascript void(0)的妙用
Oct 21 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
Oct 16 Javascript
AngularJS ng-controller 指令简单实例
Aug 01 Javascript
JS实现漂亮的时间选择框效果
Aug 20 Javascript
Node.js包管理器Yarn的入门介绍与安装
Oct 17 Javascript
Javascript Function.prototype.bind详细分析
Dec 29 Javascript
用angular实现多选按钮的全选与反选实例代码
May 23 Javascript
什么是Vue.js框架 为什么选择它?
Oct 17 Javascript
JS通过位运算实现权限加解密
Aug 14 Javascript
微信小程序 可搜索的地址选择实现详解
Aug 28 Javascript
Vue的data、computed、watch源码浅谈
Apr 04 Javascript
JavaScript JSON使用原理及注意事项
Jul 30 Javascript
uni-app使用countdown插件实现倒计时
Nov 01 #Javascript
uni-app实现获取验证码倒计时功能
Nov 01 #Javascript
uniapp电商小程序实现订单30分钟倒计时
Nov 01 #Javascript
详解JavaScript之Array.reduce源码解读
Nov 01 #Javascript
微信小程序实现星星评分效果
Nov 01 #Javascript
Express 配置HTML页面访问的实现
Nov 01 #Javascript
ant design vue 表格table 默认勾选几项的操作
Oct 31 #Javascript
You might like
php的memcached客户端memcached
2011/06/14 PHP
PHP判断远程图片或文件是否存在的实现代码
2014/02/20 PHP
php实现的支持断点续传的文件下载类
2014/09/23 PHP
ThinkPHP独立分组使用的注意事项
2014/11/25 PHP
PHP书写格式详解(必看)
2016/05/23 PHP
php 修改上传文件大小限制实例详解
2016/10/23 PHP
JavaScript 在线压缩和格式化收藏
2009/01/16 Javascript
javascript实现的距离现在多长时间后的一个格式化的日期
2009/10/29 Javascript
firefox和IE系列的相关区别整理 以备后用
2009/12/28 Javascript
Js判断CSS文件加载完毕的具体实现
2014/01/17 Javascript
JSON与XML优缺点对比分析
2015/07/17 Javascript
Ajax基础知识详解
2017/02/17 Javascript
Angular.js自动化测试之protractor详解
2017/07/07 Javascript
JS写XSS cookie stealer来窃取密码的步骤详解
2017/11/20 Javascript
vue 中directive功能的简单实现
2018/01/05 Javascript
axios全局注册,设置token,以及全局设置url请求网段的方法
2018/09/25 Javascript
Vue指令指令大全
2019/02/09 Javascript
详解javascript中的Error对象
2019/04/25 Javascript
原生js实现的移动端可拖动进度条插件功能详解
2019/08/15 Javascript
layer.open的自适应及居中及子页面标题的修改方法
2019/09/05 Javascript
angular inputNumber指令输入框只能输入数字的实现
2019/12/03 Javascript
[00:33]2016完美“圣”典风云人物:BurNIng宣传片
2016/12/10 DOTA
基于Python_脚本CGI、特点、应用、开发环境(详解)
2017/05/23 Python
python 实现tar文件压缩解压的实例详解
2017/08/20 Python
使用python和Django完成博客数据库的迁移方法
2018/01/05 Python
python3.6.3转化为win-exe文件发布的方法
2018/10/31 Python
浅谈PyQt5中异步刷新UI和Python多线程总结
2019/12/13 Python
Champs Sports加拿大:北美最大的以商场为基础的专业运动鞋和服装零售商之一
2018/05/01 全球购物
Europcar澳大利亚官网:全球汽车租赁领域的领导者
2019/03/24 全球购物
PHP面试题-$message和$$message的区别
2015/12/08 面试题
大学军训感言600字
2014/02/25 职场文书
小学生读书活动总结
2014/06/30 职场文书
第二批党的群众路线教育实践活动总结报告
2014/10/30 职场文书
k-means & DBSCAN 总结
2021/04/27 Python
nginx服务器的下载安装与使用详解
2021/08/02 Servers
「回转企鹅罐」10周年纪念展「輪るピングドラム展」海报公开
2022/03/22 日漫