做小程序项目中,需要做一个倒计时功能,如下图:

记录一下实现步骤:

1.考虑到这个功能可能会有多处用到,所以把倒计时的函数写在utils.js里面:

const formatNumber = n => {
n = n.toString()
return n[1] ? n : '0' + n
} // 倒计时
function countDown(that) { //倒计时函数
let newTime = new Date().getTime();
let endTime = that.data.endTime;
let remainTime = endTime - newTime;
let obj = null;
let t = '';
// 如果活动未结束,对时间进行处理
if (remainTime > 0) {
let time = remainTime / 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: formatNumber(day),
hou: formatNumber(hou),
min: formatNumber(min),
sec: formatNumber(sec)
}
}
t = setTimeout(function() {
that.setData({
countDownTxt: obj
});
countDown(that)
}, 1000)
if (remainTime <= 0) {
clearTimeout(t);
}
}
module.exports = {
  countDown: countDown,
}
 

2.在目标页面的js里面引用该js,并执行倒计时方法:

//获取应用实例
var app = getApp();
var ss = require('../../../utils/utils.js') Page({ /**
* 页面的初始数据
*/
data: {
nowTime: new Date().getTime(), //获取当前日期
endTime: 1533177202000,//结束日期时间戳
remainTime: null,
countDownTxt:null,
},
onLoad: function(options) {
this.setData({
remainTime: this.data.endTime - this.data.nowTime
})
}, onShow: function() {
ss.countDown(this);
},
})

wxml:

<view class="course-countdown">
<block wx:if="{{remainTime>0}}">
<text class='block fs-28'>距活动结束:</text>
<view class="countdown-result fs-24 mt-5">
<text>{{countDownTxt.day}}</text> 天
<text>{{countDownTxt.hou}}</text> 时
<text>{{countDownTxt.min}}</text> 分
<text>{{countDownTxt.sec}}</text> 秒
</view>
</block>
<block wx:else>
<text class="fs-28">该活动已结束</text>
</block>
</view>

O啦~~~

最新文章

  1. 【BZOJ】3757: 苹果树
  2. List&lt;object&gt;排序 z
  3. 项目.c文件和.h文件关系
  4. 关于struts2的web.xml配置
  5. 浅析Java源码之LinkedList
  6. Kafka的安装及与Spring Boot的集成
  7. javascript/ajax和php 进阶 之 项目实战
  8. Apache升级PHP教程(以5.3.3升级到5.6.30为例)
  9. React-Native 上拉加载下拉刷新
  10. js关于去重的写法
  11. 获取【酷我音乐】歌曲URL地址
  12. Ubuntu 18.04 安装和常用软件安装
  13. RabbitMQ入门_07_Fanout 与 Topic
  14. Velocity学习笔记
  15. SCTP客户端与服务器
  16. 029-FastDFSClient工具栏模板
  17. PHP获取本地时间
  18. 【原创】os.chdir设置的工作路径和sys.path之间到底是个啥关系?
  19. 【树上莫队】bzoj3757 苹果树
  20. python双向链表的疑问(Question)

热门文章

  1. C++的string类常见用法
  2. 利用javapns对IOS进行推送
  3. HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求。
  4. git add 不必要的文件 如何撤回
  5. View:Android View的scrollTo(),scrollBy(),getScrollX(), getScrollY()的理解
  6. nginx 屏蔽恶意请求
  7. 【ARM】ARM体系结构-GPIO
  8. 关于事件冒泡和键盘事件 以及与Angular的区别
  9. table 中 文字长度大于td宽度,导致文字换行 解决方案
  10. virtual box 5.2.12 扩展包安装