最终效果
须要实现的功能
- 点击启动, 开始倒计时
- 点击暂停, 结束倒计时, 再次点击启动, 继续倒计时
- 连续点击启动, 倒计时不受影响
- 倒计时, 秒针走完一分钟, 分钟自动减一, 秒针从 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