zoukankan      html  css  js  c++  java
  • 小程序(实现多个倒计时interval)

    效果如见图:

    重点是在如果做到一一对应,代码如下:

    wxml代码:

    <view class='contents'>
      <block wx:for="{{timeList}}" wx:key="">
        <view class='item_list' data-id='{{index}}' bindtap='getTime' style="100%;height:100rpx;line-height:100rpx;background:#eee;margin-bottom:20rpx;">
          <view>{{item.name}}:<text style="color:red;">{{insertTime[index] == null ?"":insertTime[index]}}</text></view>
        </view>
      </block>
    </view>
     
    js代码:
    var util =require("../../utils/util.js")
    Page({

    /**
    * 页面的初始数据
    */
      data: {
        timeList:[
          {lastDate:"2018-07-01 10:00:00",name:"倒计时1"},
          { lastDate: "2018-04-01 10:00:00", name: "倒计时2" },
          { lastDate: "2018-08-05 10:00:00", name: "倒计时3" },
          { lastDate: "2018-09-05 10:00:00", name: "倒计时4" },
        ],
        insertTime:[]
     
      },
      getTime: function(e){
        var id = e.currentTarget.dataset.id;
        var _this = this;
        var timeList = _this.data.timeList;
        var lastDate = timeList[id].lastDate;
        lastDate = Date.parse(lastDate);
        console.log(lastDate)
        util.interval(lastDate,_this,id);
      },
    })
     
     
    封装的方法:
    function interval(lastTime, _this, index) {//到期时间戳
      interval = setInterval(function () {
        var insertTime = _this.data.insertTime;
        // 获取现在的时间
        var nowTime = new Date();
        var nowTime = Date.parse(nowTime);//当前时间戳
        var differ_time = lastTime - nowTime;//时间差:

        if (differ_time >= 0) {
          var differ_day = Math.floor(differ_time / (3600 * 24 * 1e3));//相差天数
          var differ_hour = Math.floor(differ_time % (3600 * 1e3 * 24) / (1e3 * 60 * 60));//相差小时
          var differ_minute = Math.floor(differ_time % (3600 * 1e3) / (1000 * 60));//相差分钟
          var s = Math.floor(differ_time % (3600 * 1e3) % (1000 * 60) / 1000);
          if (differ_day.toString().length < 2) {
            differ_day = "0" + differ_day;
          }
          if (differ_hour.toString().length < 2) {
            differ_hour = "0" + differ_hour;
          }
          if (differ_minute.toString().length < 2) {
            differ_minute = "0" + differ_minute;
          }
          var str = differ_day + '天' + differ_hour + '时' + differ_minute + '分'+s;

          insertTime[index] = str;
          _this.setData({ insertTime: insertTime });
        } else {// 当车险到期时,不再进行倒计时
          console.log("不进行倒计时");
          insertTime[index] = "00天00小时00分";
          _this.setData({ insertTime: insertTime });
          clearInterval(interval);
        }

    }, 1000);

    }
     
     
     
  • 相关阅读:
    【磁盘/文件系统】第五篇:CentOS7.x__btrfs文件系统详解
    【python】-- IO多路复用(select、poll、epoll)介绍及实现
    【python】-- 事件驱动介绍、阻塞IO, 非阻塞IO, 同步IO,异步IO介绍
    【python】-- 协程介绍及基本示例、协程遇到IO操作自动切换、协程(gevent)并发爬网页
    【python】-- 多进程的基本语法 、进程间数据交互与共享、进程锁和进程池的使用
    【python】-- 队列(Queue)、生产者消费者模型
    【python】-- 信号量(Semaphore)、event(红绿灯例子)
    【python】-- GIL锁、线程锁(互斥锁)、递归锁(RLock)
    【python】-- 继承式多线程、守护线程
    【python】-- 进程与线程
  • 原文地址:https://www.cnblogs.com/Andrea-Li/p/8695727.html
Copyright © 2011-2022 走看看