javascript中的倒計時功能在web開發中很常用,比如秒殺活動倒計時、網站上的敬請期待計時等,應用場景很廣泛,那么這些倒計時是怎么實現的呢?下面我們就來聊一聊javascript中倒計時的實現方法。
在javascript中,倒計時的實現依賴于定時器setInterval()和倒計時時間。我們可以通過定義一個定時器,每隔一定的時間更新顯示屏上倒計時的值,直到時間到達0為止。我們可以用Date對象來表示時間,獲取當前時間和目標時間的時間戳,然后做差得到時間差,再將時間差分解成天、時、分、秒,最后將值傳入到頁面中顯示即可。
function countdown(endDate) { var days, hours, minutes, seconds; endDate = new Date(endDate).getTime(); if (isNaN(endDate)) { return; } setInterval(calculate, 1000); function calculate() { var startDate = new Date(); var timeRemaining = parseInt((endDate - startDate.getTime()) / 1000); if (timeRemaining >= 0) { days = parseInt(timeRemaining / 86400); timeRemaining = timeRemaining % 86400; hours = parseInt(timeRemaining / 3600); timeRemaining = timeRemaining % 3600; minutes = parseInt(timeRemaining / 60); timeRemaining = timeRemaining % 60; seconds = parseInt(timeRemaining); document.getElementById("days").innerHTML = pad(days, 2); document.getElementById("hours").innerHTML = pad(hours, 2); document.getElementById("minutes").innerHTML = pad(minutes, 2); document.getElementById("seconds").innerHTML = pad(seconds, 2); } else { return; } } function pad(n, width) { n = n + ""; return n.length >= width ? n : new Array(width - n.length + 1).join("0") + n; } }
上述代碼中,我們定義了一個countdown函數來獲取目標時間并開啟定時器,每秒執行一次calculate()函數。calculate()函數中,首先獲取當前時間與目標時間的時間差(以秒為單位),如果時間差大于0,則將時間差轉換成天、時、分、秒四個變量,然后將它們分別傳遞給要顯示倒計時的html元素。
值得注意的是,在calculate()函數中,我們用了一個pad()函數來確保小時、分鐘、秒數都保留兩位,這樣倒計時的顯示就更加規范了。
在實際應用中,我們可以根據不同的需求更改countdown()函數中的參數,比如需要顯示倒計時的html元素id,目標時間等。下面我們用一個秒殺倒計時的案例來看看countdown()函數的實際應用。
<body> <div id="countdown"> <div id="days"></div> <div id="hours"></div> <div id="minutes"></div> <div id="seconds"></div> </div> <script> var endDate = "December 21, 2021 00:00:00"; countdown(endDate); </script> </body>
在上面的代碼中,我們定義了一個id為countdown的html元素作為倒計時的顯示區域,然后我們定義了一個endDate變量,存儲著秒殺活動結束的時間,最后調用countdown()函數,并傳遞endDate參數進去。
綜上,倒計時實現的核心是通過setInterval()計時器每秒更新時間,然后把時間分解為各個單位,最后通過修改html元素來顯示倒計時。正是這種簡單而又實用的方法,讓我們在網站開發中輕松應對各種倒計時需求。