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

  • 相关阅读:
    使用navicat连接mysql报10038错时解决方法
    项目部署之前后端软件部署
    F12调试模式下使用console自动提交
    selenium+python安装配置
    常用dos命令
    jmeter的使用---web测试
    jmeter的安装
    使用JMeter创建数据库(Mysql)测试
    oracle定制定时执行任务
    AWS之Rekognition检测image-text
  • 原文地址:https://www.cnblogs.com/sese/p/9355823.html
Copyright © 2011-2022 走看看