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 相关文章推荐
解析URI与URL之间的区别与联系
Nov 22 Javascript
Javascript常用小技巧汇总
Jun 24 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
Nov 17 Javascript
javascript拖拽效果延伸学习
Apr 04 Javascript
jQuery实现图像旋转动画效果
May 29 Javascript
JS常用字符串方法(推荐)
Jan 15 Javascript
输入法的回车与消息发送快捷键回车的冲突解决方法
Aug 09 Javascript
angularjs中ng-attr的用法详解
Dec 31 Javascript
JS触摸与手势事件详解
May 09 Javascript
MUI实现上拉加载和下拉刷新效果
Jun 30 Javascript
this在vue和小程序中的使用详解
Jan 28 Javascript
解决Vue @submit 提交后不刷新页面问题
Jul 18 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
介绍几个array库的新函数 php
2006/12/29 PHP
PHP模拟asp.net的StringBuilder类实现方法
2015/08/08 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
2020/01/23 PHP
javascript options属性集合操作代码
2009/12/28 Javascript
js替代copy(示例代码)
2013/11/27 Javascript
让IE8浏览器支持function.bind()方法
2014/10/16 Javascript
jQuery中removeData()方法用法实例
2014/12/27 Javascript
jQuery学习笔记之基础中的基础
2015/01/19 Javascript
jQuery实现鼠标经过图片变亮其他变暗效果
2015/05/08 Javascript
jQuery实现div随意拖动的实例代码(通用代码)
2016/01/28 Javascript
详解JavaScript中return的用法
2017/05/08 Javascript
nodeJS实现简单网页爬虫功能的实例(分享)
2017/06/08 NodeJs
解决layer弹层遮罩挡住窗体的问题
2018/08/17 Javascript
Vue使用NProgress的操作过程解析
2019/10/10 Javascript
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
vue 实现在同一界面实现组件的动态添加和删除功能
2020/06/16 Javascript
[46:14]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第一场 12.11
2020/12/16 DOTA
python使用在线API查询IP对应的地理位置信息实例
2014/06/01 Python
Python实现端口复用实例代码
2014/07/03 Python
python实现从字典中删除元素的方法
2015/05/04 Python
在python中画正态分布图像的实例
2019/07/08 Python
python中元组的用法整理
2020/06/15 Python
意大利会呼吸的鞋:Geox健乐士
2017/02/12 全球购物
Ariat英国官网:为世界顶级马术运动员制造最优质的鞋类和服装
2020/02/14 全球购物
百度软件工程师职位
2013/02/14 面试题
一份婚庆公司创业计划书
2014/01/11 职场文书
体操比赛口号
2014/06/10 职场文书
民主生活会整改措施(党员)
2014/09/18 职场文书
导游词之阳朔遇龙河
2019/12/16 职场文书
理解深度学习之深度学习简介
2021/04/14 Python
教你怎么用Python实现多路径迷宫
2021/04/29 Python
用Java实现简单计算器功能
2021/07/21 Java/Android
纯html+css实现奥运五环的示例代码
2021/08/02 HTML / CSS
【2·13】一图读懂中国无线电发展
2022/02/18 无线电
奥特曼十大神器:奥特手镯在榜,第一是贝利亚的神器
2022/03/18 日漫
直播实况, OMG破敌三路五十分钟大战神技局摩托车
2022/04/01 DOTA