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 相关文章推荐
CheckBox 如何实现全选?
Jun 23 Javascript
JavaScript让IE浏览器event对象符合W3C DOM标准
Nov 24 Javascript
用jquery写的一个万年历(自写)
Jan 20 Javascript
js创建对象的区别示例介绍
Jul 24 Javascript
Javascript实现网络监测的方法
Jul 31 Javascript
微信企业号开发之微信考勤Cookies的使用
Sep 11 Javascript
微信小程序开发之数据存储 参数传递 数据缓存
Apr 13 Javascript
Vue.js 2.5新特性介绍(推荐)
Oct 24 Javascript
CKEditor4配置与开发详细中文说明文档
Oct 08 Javascript
vue动态注册组件实例代码详解
May 30 Javascript
jquery实现购物车基本功能
Oct 25 jQuery
JavaScript this关键字指向常用情况解析
Sep 02 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 5.3.1 安装包 VC9 VC6不同版本的区别是什么
2010/07/04 PHP
php 中英文语言转换类
2011/09/07 PHP
使用JSON实现数据的跨域传输的php代码
2011/12/20 PHP
ThinkPHP利用PHPMailer实现邮件发送实现代码
2013/09/26 PHP
php 字符串中是否包含指定字符串的多种方法
2018/04/12 PHP
PHP与Web页面的交互示例详解二
2020/08/04 PHP
jQuery 打造动态下滑菜单实现说明
2010/04/15 Javascript
jquery.autocomplete修改实现键盘上下键自动填充示例
2013/11/19 Javascript
JavaScript cookie的设置获取删除详解
2014/02/11 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
2015/06/23 Javascript
jQuery旋转木马式幻灯片轮播特效
2015/12/04 Javascript
Bootstarp风格的toggle效果分享
2016/02/23 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
EsLint入门学习教程
2017/02/17 Javascript
Vue render渲染时间戳转时间,时间转时间戳及渲染进度条效果
2018/07/27 Javascript
[00:34]DOTA2上海特级锦标赛 VG战队宣传片
2016/03/04 DOTA
Django验证码的生成与使用示例
2017/05/20 Python
回调函数的意义以及python实现实例
2017/06/20 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
2020/01/21 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
2020/02/28 Python
python小程序基于Jupyter实现天气查询的方法
2020/03/27 Python
python怎么删除缓存文件
2020/07/19 Python
sqlalchemy实现时间列自动更新教程
2020/09/02 Python
CSS3中Animation动画属性用法详解
2016/07/04 HTML / CSS
美国维生素、补充剂、保健食品购物网站:Vitacost
2016/08/05 全球购物
韩国女装NO.1网店:STYLENANDA
2016/09/16 全球购物
英国顶级家庭折扣店:The Works
2017/09/06 全球购物
函授本科毕业自我鉴定
2013/10/09 职场文书
材料化学专业求职信
2014/07/15 职场文书
领导班子个人查摆问题对照检查材料
2014/10/02 职场文书
2016年第十九届推普周活动总结
2016/04/06 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
Html5获取用户当前位置的几种方式
2022/01/18 HTML / CSS
Python如何利用pandas读取csv数据并绘图
2022/07/07 Python
MySQL中dd::columns表结构转table过程及应用详解
2022/09/23 MySQL