<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        js實現多個倒計時并行 js拼團倒計時

        來源:懂視網 責編:小采 時間:2020-11-27 22:00:38
        文檔

        js實現多個倒計時并行 js拼團倒計時

        js實現多個倒計時并行 js拼團倒計時:本文是對類似于拼團,多個商品每個都有各自的倒計時,一開始接到接到這個需求也是頭疼了一陣子,如果是在商品列表少的時候完全就可以寫成死的,固定的變量,寫幾個定時器就ok了, 但是這次數據是活的,看一些拼團app都可以實現,既然能實現就搞起來,有了以下
        推薦度:
        導讀js實現多個倒計時并行 js拼團倒計時:本文是對類似于拼團,多個商品每個都有各自的倒計時,一開始接到接到這個需求也是頭疼了一陣子,如果是在商品列表少的時候完全就可以寫成死的,固定的變量,寫幾個定時器就ok了, 但是這次數據是活的,看一些拼團app都可以實現,既然能實現就搞起來,有了以下

        本文是對類似于拼團,多個商品每個都有各自的倒計時,一開始接到接到這個需求也是頭疼了一陣子,如果是在商品列表少的時候完全就可以寫成死的,固定的變量,寫幾個定時器就ok了,

        但是這次數據是活的,看一些拼團app都可以實現,既然能實現就搞起來,有了以下的想法 使用環境 vue

        寫一個準備渲染的死數據

        data () {
         return {
         list: [ // 準備渲染的數據
         {
         remainTime: 900000, // 距離結束還有多久
         remainTimeStr: '' // 展示文案
         },
         {
         remainTime: 400000,
         remainTimeStr: ''
         },
         {
         remainTime: 60500,
         remainTimeStr: ''
         },
         ]
         }
        }
        

        百度copy一個倒計時的方法

        countdowm (timestamp) {
         let self = this
         let timer = setInterval(function () {
         let nowTime = new Date()
         let endTime = new Date(timestamp)
         let t = endTime.getTime() - nowTime.getTime()
         if (t > 0) {
         let day = Math.floor(t / 86400000)
         let hour = Math.floor((t / 3600000) % 24)
         let min = Math.floor((t / 60000) % 60)
         let sec = Math.floor((t / 1000) % 60)
         hour = hour < 10 ? '0' + hour : hour
         min = min < 10 ? '0' + min : min
         sec = sec < 10 ? '0' + sec : sec
         let format = ''
         if (day > 0) {
         format = `${day}天${hour}小時${min}分${sec}秒`
         }
         if (day <= 0 && hour > 0) {
         format = `${hour}小時${min}分${sec}秒`
         }
         if (day <= 0 && hour <= 0) {
         format = `${min}分${sec}秒`
         }
         self.content = format
         } else {
         clearInterval(timer)
         self.content = 'over'
         }
         }, 1000)
        }
        

        捋清邏輯

        首先, 根據邏輯對倒計時的方法進行更改,我們直接使用的就是距離結束還有多少時間的時間戳 ,我的思路是用一個定時器達到一個并行多個倒計時的思路,所以先將方法進行優化

      1. 不需要獲取時間
      2. 也不需要一些時間計算
      3. 因為是多個倒計時并行 所以清楚定時器的邏輯需要進行更改
      4. countdowm (timestamp) {
         let self = this
         let timer = setInterval(function () {
         let t = timestamp
         if (t > 0) {
         let day = Math.floor(t / 86400000)
         let hour = Math.floor((t / 3600000) % 24)
         let min = Math.floor((t / 60000) % 60)
         let sec = Math.floor((t / 1000) % 60)
         day = day < 10 ? '0' + day : day
         hour = hour < 10 ? '0' + hour : hour
         min = min < 10 ? '0' + min : min
         sec = sec < 10 ? '0' + sec : sec
         let format = ''
         format = `${day}天${hour}小時${min}分${sec}秒`
         self.content = format
         } else {
         // clearInterval(timer)
         self.content = 'over'
         }
         }, 1000)
        }
        

        簡化完畢, 把自己剛才的思路帶進方法內

        在定時器里 寫一個循環 每次減少一秒 讓當前數據內remainTime時間戳-1000

        countdown () {
         let self = this
         let timer = setInterval(function () {
         for (let i = 0; i < self.list.length; i++) {
         self.list[i].remainTime -= 1000
         let t = self.list[i].remainTime
         if (t > 0) {
         let day = Math.floor(t / 86400000)
         let hour = Math.floor((t / 3600000) % 24)
         let min = Math.floor((t / 60000) % 60)
         let sec = Math.floor((t / 1000) % 60)
         day = day < 10 ? '0' + day : day
         hour = hour < 10 ? '0' + hour : hour
         min = min < 10 ? '0' + min : min
         sec = sec < 10 ? '0' + sec : sec
         let format = ''
         format = `距離結束:<b>${day}</b> 天 <b>${hour}</b> 
        時 <b>${min}</b> 分 <b>${sec}</b> 秒`
         self.list[i].remainTimeStr = format
         } else {
         // 進行判斷 如果數據內所有的倒計時已經結束,那么結束定時器, 如果沒有那么繼續執行定時器
         let flag = self.list.every((val, ind) => 
         
        val.remainTime <= 0)
         if (flag) clearInterval(timer)
         self.list[i].remainTimeStr = `距離結束:<b>00</b> 天 
        <b>00</b> 時 <b>00</b> 分 <b>00</b> 秒` // 結束文案
         }
         }
         }, 1000)
        }
        

        這樣 并行多個定時器就做好了, 但是發現了一個問題 當你切換路由的時候 發下你的定時器如果未結束 他還在執行,這樣對性能造成了一些影響, 雖說用戶看不到,但是也要解決,提高用戶瀏覽體驗
        在你切換頁面的時候 使用vue中的生命周期函數把數據更改為0 就ok

        destroyed () {
         this.list.forEach((val) => {
         val.remainTime = 0
         })
        }
        
        

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        js實現多個倒計時并行 js拼團倒計時

        js實現多個倒計時并行 js拼團倒計時:本文是對類似于拼團,多個商品每個都有各自的倒計時,一開始接到接到這個需求也是頭疼了一陣子,如果是在商品列表少的時候完全就可以寫成死的,固定的變量,寫幾個定時器就ok了, 但是這次數據是活的,看一些拼團app都可以實現,既然能實現就搞起來,有了以下
        推薦度:
        標簽: 多個 js 倒計時
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 人妻无码久久一区二区三区免费| 青青免费在线视频| 午夜精品一区二区三区免费视频| 亚洲精品97久久中文字幕无码| 在线观看亚洲免费| 亚洲国产精品成人网址天堂| 一级片在线免费看| 亚洲中文字幕无码久久精品1| 三年片在线观看免费| 区久久AAA片69亚洲| 中文字幕视频免费在线观看| 久久亚洲精品视频| 2020因为爱你带字幕免费观看全集 | 中文字幕亚洲综合久久菠萝蜜| 亚洲天堂免费在线视频| 国产亚洲婷婷香蕉久久精品| 玖玖在线免费视频| 91午夜精品亚洲一区二区三区| 免费a级毛片高清视频不卡| 亚洲欧洲av综合色无码| 免费一级特黄特色大片在线观看| 国产男女爽爽爽免费视频 | 亚洲综合国产精品第一页 | 最近免费中文字幕mv电影| 亚洲毛片免费视频| 看全色黄大色大片免费久久| 一区二区三区免费高清视频| 亚洲av激情无码专区在线播放| 国产成人A在线观看视频免费| 污污的视频在线免费观看| 国产亚洲综合色就色| 91成人免费在线视频| 免费看美女午夜大片| 亚洲第一区香蕉_国产a| 女人18一级毛片免费观看| 精选影视免费在线 | 亚洲欧洲另类春色校园小说| 免费v片在线观看无遮挡| 久久久久国产精品免费免费不卡| 伊人久久亚洲综合影院首页| 国产亚洲欧洲Aⅴ综合一区 |