zoukankan      html  css  js  c++  java
  • 微信小程序——倒计时功能

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

    记录一下实现步骤:

    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啦~~~

  • 相关阅读:
    [Flink原理介绍第四篇】:Flink的Checkpoint和Savepoint介绍
    Flink -- Barrier
    深入理解Flink ---- End-to-End Exactly-Once语义
    深入理解Flink ---- 系统内部消息传递的exactly once语义
    flink watermark介绍
    flink中对于window和watermark的一些理解
    Apache Flink:详细入门
    flink学习之十一-window&EventTime实例
    Lambda语法
    String s = “1a2a3a4a” 解码为 “1234”
  • 原文地址:https://www.cnblogs.com/sese/p/9355823.html
Copyright © 2011-2022 走看看