一、解构
如图所示,手机浏览器的效果。代码就是简单的html语言加上一个JavaScript脚本,界面主要分3部分,功能实现主要分3个函数。
(一)显示样式
在头里定义了居中显示的CSS样式,将来在浏览器中居中显示倒计时X分XX秒。
<style type="text/css">
.center {
position:absolute;
top:50%;
left:50%;
transform:translate(-50%,-50%);
}
</style>
另外网页背景主体是蓝色。
<body bgcolor="blue"/>
(二)输入框和按钮
<input type="text" value="" id="time">
<input type="button" onclick="go()" value="开始">
<input type="button" onclick="stop()" value="停止">
(三)倒计时显示
倒计时timer显示区域,用到了居中显示的CSS样式,同时设置了前景色为白色,字居中,字体大小180px:
<div id="timer" class=center style="color:#fff; text-align:center; font-size:180px;"/>
(四)三个函数
go函数:
//解析时间
function go() {
clearInterval(timer);//清除定时器
document.getElementById("timer").style.color="#fff";//设置timer显示区域前景色为白色
time = document.getElementById("time").value;//获取起始时间
resetTime(time);//用time复位倒计时
}
reset函数:
function resetTime(time) {
var t = parseInt(time) * 60; //将分钟换算成秒
var m, s; //分钟和秒
function countDown() { //递减函数
t--; //时间减1
if (t < 0) { //边界值检测,若t为零,就停止计时
t = 0;
stop();
}
m = Math.floor(t / 60); //取整分钟
s = t % 60; //取秒
s < 10 && (s = '0' + s); //秒值补齐0位
document.getElementById("timer").innerHTML = m + "分" + s + "秒"; //输出倒计时显示
} //end of countDown
timer = setInterval(countDown,1000); //设置计时器,每1000毫秒调用一次countDown递减函数
} //end of resetTime
stop函数:
function stop() {
clearInterval(timer); //停止计时
document.getElementById("timer").style.color="#f00"; //设置timer工区域前景色为RGB颜色红色
}
二、样例
<!--(c)hele 2018倒计时程序,输入分钟数点击开始,内置递减程序,1秒递减1次-->
<!DOCTYPE HTML>
<html>
<head>
<style type="text/css">
.center {
position:absolute;
top:50%;
left:50%;
transform:translate(-50%,-50%);
// width:1000px;
}
</style>
</head>
<body bgcolor="blue">
<input type="text" value="" id="time">
<input type="button" onclick="go()" value="开始">
<input type="button" onclick="stop()" value="停止">
<div id="timer" class=center style="color:#fff; text-align:center; font-size:180px;">
</div>
<script type="text/javascript">
var timer = null;
//解析时间
function go() {
clearInterval(timer);
document.getElementById("timer").style.color="#fff";
time = document.getElementById("time").value;
resetTime(time);
}
function stop() {
clearInterval(timer);
document.getElementById("timer").style.color="#f00";
}
//设置倒计时器参数
function resetTime(time) {
var t = parseInt(time) * 60;
var m, s;
function countDown() {
t--;
if (t < 0) {
t = 0;
stop();
}
m = Math.floor(t / 60);
s = t % 60;
s < 10 && (s = '0' + s);
document.getElementById("timer").innerHTML = m + "分" + s + "秒";
} //end of countDown
timer = setInterval(countDown,1000);
} //end of resetTime
</script>
</body>
</html>