是這樣的,公司在一年一度重要的活動會在公司內部網站設定活動倒數計時器。
前輩使用Jsp、Javascript寫了一個簡單的倒數計時器。
我也自己試用HTML、CSS、Javascript寫了一個簡單的倒數計時器。
構想:輸入倒數日期,點擊按鈕,就會開始以天、時、分、秒倒數計時了。
簡單安排版面:
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <meta charset="utf-8"> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Tangerine"> <div class="container"> <div class="box"> <div class="div_col"> <label id="lb_title">CountDown <span id="material-icons md-48-time" class="material-icons md-48-time"> timer </span> Timer</label> </div> <div class="div_col"> <input type="date" id="ip_date" name="ip_date"> <span class="material-icons md-48-play" onmousedown="myFunction()">  </span> </div> <div class="div_col"> <div class="div_col_time"> <div class="div_col_time_row">Days</div> <div class="div_col_time_dt" id="myDays">DD</div> </div> <div class="div_col_time"> <div class="div_col_time_row">Hours</div> <div class="div_col_time_dt" id="myHours">HH</div> </div> <div class="div_col_time"> <div class="div_col_time_row">Minutes</div> <div class="div_col_time_dt" id="myMinutes">MM</div> </div> <div class="div_col_time"> <div class="div_col_time_row">Seconds</div> <div class="div_col_time_dt" id="mySeconds">SS</div> </div> </div> <!-- <label id="mydate">沒出現預料的結果就要檢查一下script!</label>--> </div> </div> </div>
注入靈魂:Javascript
想法:獲取當下時間和倒數日,兩數相減,直到零。
作法:使用Date()獲取當下時間毫秒和倒數日毫秒,若相減大於0,則表示時間未到,繼續倒數。倒數使用SetInterval()執行每秒倒數。時間到則使用ClearInterval()停止執行。
需注意:獲取毫秒後須再使用parse()轉數字型態,才能將取得的毫秒用在Math()對象。
var sp_time = document.getElementById("material-icons md-48-time"); var myval; sp_time.style.cssText = "color:blue;"; function myFunction() { clearInterval(myval); var today = new Date(); //若要測試,可以編輯基準天日期 var md = document.getElementById("ip_date").value; var myday = new Date(md); var mresult = Date.parse(myday) - Date.parse(today) - 8 * 60 * 60 * 1000; /*input type date is begin at am8:00*/ //console.log("1"); myval = setInterval(function () { //console.log("2"); if (mresult > 0) { //console.log("3"); document.getElementById("myDays").innerHTML = Math.floor( mresult / (24 * 60 * 60 * 1000) ); document.getElementById("myHours").innerHTML = Math.floor(mresult / (60 * 60 * 1000)) % 24; document.getElementById("myMinutes").innerHTML = Math.floor(mresult / (60 * 1000)) % 60; document.getElementById("mySeconds").innerHTML = Math.floor(mresult / 1000) % 60; mresult = mresult - 1000; //console.log("4"); } else { clearInterval(myval); document.getElementById("myDays").innerHTML = "D"; document.getElementById("myHours").innerHTML = "O"; document.getElementById("myMinutes").innerHTML = "N"; document.getElementById("mySeconds").innerHTML = "E"; // document.getElementById("mydate").innerHTML = "時間到!"; //console.log("5"); } //console.log("6"); }, 1000); //console.log("7"); } //console.log("8");
ps.不用理我的console.log(),只是寫的時候會簡單寫一些log,確認程式有無反應😓
完整範例程式碼
完整的Code可以到我的CodePen參考。 若有錯誤的地方還請多多指教唷。
參考資料:
JavaScript 計時事件 內有說明SetInterval、SetTimeout以及ClearInterval、ClearTimeout。
沒有留言:
張貼留言