1. 程式人生 > >微信小程式----團購或秒殺的批量倒計時實現

微信小程式----團購或秒殺的批量倒計時實現

效果圖

這裡寫圖片描述

實現思路

微信小程式實現倒計時,可以將倒計時的時間進行每一秒的計算和渲染!

JS

  1. 模擬商品列表資料 goodsList;
  2. 在 onLoad 周期函式中對活動結束時間進行提取;
  3. 建立時間格式化函式 timeFormat;
  4. 建立倒計時函式 countDown;
  5. 在 onLoad 周期函式的提取結尾執行倒計時函式 countDown。
倒計時函式詳解
  1. 獲取當前時間,同時得到活動結束時間陣列;
  2. 迴圈活動結束時間陣列,計算每個商品活動結束時間的倒計時天、時、分、秒;
  3. 用 setData 方法重新整理資料;
  4. 每個一秒執行一次倒計時函式 setTimeout(this.countDown,1000);

let goodsList = [
  {actEndTime: '2018-05-01 10:00:43'},
  {actEndTime: '2018-04-01 11:00:00'},
  {actEndTime: '2018-06-01 12:45:56'},
  {actEndTime: '2018-07-01 15:00:23'},
  {actEndTime: '2018-05-23 17:00:22'},
  {actEndTime: '2018-05-14 19:00:44'},
  {actEndTime: '2018-05-21 21:00:34'},
  {actEndTime: '2018-06-17 09:00:37'},
  {actEndTime: '2018-03-21 05:00:59'
}, {actEndTime: '2018-04-19 07:00:48'}, {actEndTime: '2018-04-28 03:00:11'} ] Page({ data: { countDownList: [], actEndTimeList: [] }, onLoad(){ let endTimeList = []; // 將活動的結束時間引數提成一個單獨的陣列,方便操作 goodsList.forEach(o => {endTimeList.push(o.actEndTime)}) this.setData({ actEndTimeList: endTimeList}); // 執行倒計時函式
this.countDown(); }, timeFormat(param){//小於10的格式化函式 return param < 10 ? '0' + param : param; }, countDown(){//倒計時函式 // 獲取當前時間,同時得到活動結束時間陣列 let newTime = new Date().getTime(); let endTimeList = this.data.actEndTimeList; let countDownArr = []; // 對結束時間進行處理渲染到頁面 endTimeList.forEach(o => { let endTime = new Date(o).getTime(); let obj = null; // 如果活動未結束,對時間進行處理 if (endTime - newTime > 0){ let time = (endTime - newTime) / 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: this.timeFormat(day), hou: this.timeFormat(hou), min: this.timeFormat(min), sec: this.timeFormat(sec) } }else{//活動已結束,全部設定為'00' obj = { day: '00', hou: '00', min: '00', sec: '00' } } countDownArr.push(obj); }) // 渲染,然後每隔一秒執行一次倒計時函式 this.setData({ countDownList: countDownArr}) setTimeout(this.countDown,1000); } })

WXML

簡單的佈局和居中顯示。

<view class='tui-countdown-content' wx:for="{{countDownList}}" wx:key="countDownList">
  剩餘
  <text class='tui-conutdown-box'>{{item.day}}</text><text class='tui-conutdown-box'>{{item.hou}}</text><text class='tui-conutdown-box'>{{item.min}}</text><text class='tui-conutdown-box tui-countdown-bg'>{{item.sec}}</text></view>

WXSS

page{background-color: #eee;}
.tui-countdown-content{
  height: 50px;
  line-height: 50px;
  text-align: center;
  background-color: #fff;
  margin-top: 15px;
  padding: 0 15px;
  font-size: 18px;
}
.tui-conutdown-box{
  display: inline-block;
  height: 26px;
  width: 26px;
  line-height: 26px;
  text-align: center;
  background-color: #000;
  color: #fff;
  margin: 0 5px;
}
.tui-countdown-bg{
  background-color: #DF0101;
}

實際應用效果圖

由於活動已結束,所以時間全部為’00’
這裡寫圖片描述

總結

由於微信小程式的資料處理比HTML的更加方便快捷,所以在實現相同效果的時候需要對應的轉化一下思路,可能更好的解決問題。

下載

遊戲列表