<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
span{
background-color: black;
color: aliceblue;
font-size: 50px;
}
</style>
</head>
<body>
<div>
<span class="shi">1</span>
<span class="fen">2</span>
<span class="miao">3</span>
</div>
<script>
var shi = document.getElementsByClassName('shi')[0];// 小时的盒子
var fen = document.getElementsByClassName('fen')[0];// 分钟的盒子
var miao = document.getElementsByClassName('miao')[0];// 秒数的盒子
var inputTime = new Date('2022-8-15 23:59:00');// 返回的是用户输入时间总的毫秒数
countDown();// 我们先调用一次这个函数,防止第一次刷新页面有空白
// 开启定时器
setInterval(countDown, 1000);
function countDown() {
var nowTime = new Date();// 返回的是当前时间总的毫秒数
var times = (inputTime - nowTime) / 1000;
var h = parseInt(times / 60 / 60 % 24); //时
h = h < 10 ? '0' + h : h;
shi.innerHTML = h + '时';
var m = parseInt(times / 60 % 60); //分
m = m < 10 ? '0' + m : m;
fen.innerHTML = m + '分';
var s = parseInt(times % 60); //分
s = s < 10 ? '0' + s : s;
miao.innerHTML = s + '秒';
}
</script>
</body>
</html>
首先我们要知道这个倒计时是不断变化的,索引要用到定时器来让它自动变化。
这三个盒子里分别存放的是时分秒。
三个盒子利用innerHTML放入计算好的时间。
第一次执行也是间隔毫秒数,所以刷新页面会有空白。
最好用封装函数的方式,这样可以先调用一次这个函数,防止刚开始刷新页面有空白的问题。