最終效果
須要實現的功能
- 點擊啓動, 開始倒計時
- 點擊暫停, 結束倒計時, 再次點擊啓動, 繼續倒計時
- 連續點擊啓動, 倒計時不受影響
- 倒計時, 秒針走完一分鐘, 分鐘自動減一, 秒針從 59 開始
- 倒計時結束, 彈框提醒
- 若是小於 10, 前補零
實現代碼
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>倒計時時鐘</title>
<style> body, div { margin: 0; padding: 0; } #countdown { width: 300px; text-align: center; margin: 10px auto; padding: 20px 0; } span { color: #000; width: 80px; line-height: 2; background: #fbfbfb; border: 2px solid #b4b4b4; margin: 0 10px; padding: 0 10px; } </style>
</head>
<body>
<div id="countdown">
<span>01</span>
分鐘
<span>20</span>
秒
<input type="button" value="啓動" />
<input type="button" value="暫停" />
</div>
<script src="demo.js"></script>
</body>
</html>
複製代碼
window.onload = function(){
oStart = document.querySelector('input[value="啓動"]');
oPause = document.querySelector('input[value="暫停"]');
var timeleft = 0;
var timer = null;
oStart.onclick = function(){
if(!timer){
getTimeLeft();
timer = setInterval(updateTime,100);
}
}
oPause.onclick = function(){
clearInterval(timer);
timer = null;
}
function updateTime(){
timeleft--;
if(timeleft<0) {
clearInterval(timer);
timer = null;
alert('倒計時結束!');
return;
}
showTime();
}
function getTimeLeft(){
var iMin = document.querySelector('#countdown>span:nth-child(1)').innerHTML
var iSec = document.querySelector('#countdown>span:nth-child(2)').innerHTML
timeleft = parseInt(iMin)*60+parseInt(iSec);
}
function showTime(){
var iMin = parseInt(timeleft/60);
var iSec = parseInt(timeleft%60);
if(iMin<10){
iMin = "0"+iMin;
}
if(iSec<10){
iSec = "0"+iSec;
}
document.querySelector('#countdown>span:nth-child(1)').innerHTML = iMin;
document.querySelector('#countdown>span:nth-child(2)').innerHTML = iSec;
}
}
複製代碼
innerHTML
和innerText
- innerHTML, 獲取標籤對象裏面的html代碼
- innerText, 獲取標籤對象裏面的文本內容
- 可獲取和賦值
setInterval()
和clearInterval()
setInterval
, 設置一個時間間隔, 循環執行一個函數, 定時任務
- 參數一: 函數名, 參數二:時間間隔, 單位是毫秒
clearInterval
清除以前設定的任務
- 參數一: 以前setInterval的返回值
setTimeout()
和clearTimeout()
setTimeout
, 延時執行函數
- 參數一: 函數名, 參數二: 延遲時間, 單位是毫秒
clearTimeout
, 清除以前的延時任務
- 參數一:
setTimeout
的返回值
強制類型轉換 parseInt()
break
和 return
break
終止循環
return
終止函數, 並返回值
專欄地圖
- [作特效, 學JS] -- 00 開篇
- [作特效, 學JS] -- 01 超連接鼠標移入變大變紅, 鼠標移除還原
- [作特效, 學JS] -- 02 鼠標移入, div變大變紅, 鼠標移出, 回覆原貌
- [作特效, 學JS] -- 03 網頁換膚
- [作特效, 學JS] -- 04 複選框全選
- [作特效, 學JS] -- 05 複選框全選/全不選
- [作特效, 學JS] -- 06 複選框全選/全不選/反選
- [作特效, 學JS] -- 07 網頁選項卡
- [作特效, 學JS] -- 08 倒計時
- [作特效, 學JS] -- 09 正經的 全選和反選
- [作特效, 學JS] -- 10 自動生成表格
- [作特效, 學JS] -- 11 加餐-神奇的正則表達式
- [作特效, 學JS] -- 12 加餐-DOM擴展
- [作特效, 學JS] -- 13 加餐-聊聊BOM