JS实现定时器
案例分析
我们需要制作一个定时器,可以在屏幕上面显示的。
- 首先我们需要的是,在三个黑色的盒子里面显示时间。
- 然后设置自动变化,利用
setInterval
实现。 - 最后使用
innerHTML
在三个盒子中分别设置时分秒。
结果展示
构建框架
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div>
<span class="hour">1</span>
<span class="minute">2</span>
<span class="second">3</span>
</div>
</html>
CSS样式
<style>
div {
/* 把盒子设置到比较中间的位置 */
margin-top: 200px;
margin-left: 400px;
}
span {
/* 设置成行内块元素 */
display: inline-block;
/* 设置盒子大小 */
width: 40px;
height: 40px;
/* 设置背景颜色 */
background-color: #333;
/* 设置文字大小 */
font-size: 20px;
/* 设置文字颜色 */
color: #fff;
/* 设置文字居中 */
text-align: center;
/* 设置行高 */
line-height: 40px;
}
</style>
JS逻辑
<script>
// 1. 获取元素
var hour = document.querySelector('.hour'); // 小时的黑色盒子
var minute = document.querySelector('.minute'); // 分钟的黑色盒子
var second = document.querySelector('.second'); // 秒数的黑色盒子
var inputTime = +new Date('2022-12-6 18:00:00'); // 返回的是用户输入时间总的毫秒数 这里需要的是,
// 需要的是填写当前自己的电脑上的时间以后的时间,不然会很奇怪
countDown(); // 我们先调用一次这个函数,防止第一次刷新页面有空白
// 2. 开启定时器
setInterval(countDown, 1000);
function countDown() {
var nowTime = +new Date(); // 返回的是当前时间总的毫秒数
var times = (inputTime - nowTime) / 1000; // times是剩余时间总的秒数
var h = parseInt(times / 60 / 60 % 24); //时
h = h < 10 ? '0' + h : h;
hour.innerHTML = h; // 把剩余的小时给 小时黑色盒子
var m = parseInt(times / 60 % 60); // 分
m = m < 10 ? '0' + m : m;
minute.innerHTML = m; // 设置分钟
var s = parseInt(times % 60); // 当前的秒
s = s < 10 ? '0' + s : s;
second.innerHTML = s; // 设置秒数
}
</script>
完整代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
div {
/* 把盒子设置到比较中间的位置 */
margin-top: 200px;
margin-left: 400px;
}
span {
/* 设置成行内块元素 */
display: inline-block;
/* 设置盒子大小 */
width: 40px;
height: 40px;
/* 设置背景颜色 */
background-color: #333;
/* 设置文字大小 */
font-size: 20px;
/* 设置文字颜色 */
color: #fff;
/* 设置文字居中 */
text-align: center;
/* 设置行高 */
line-height: 40px;
}
</style>
</head>
<body>
<div>
<span class="hour">1</span>
<span class="minute">2</span>
<span class="second">3</span>
</div>
<script>
// 1. 获取元素
var hour = document.querySelector('.hour'); // 小时的黑色盒子
var minute = document.querySelector('.minute'); // 分钟的黑色盒子
var second = document.querySelector('.second'); // 秒数的黑色盒子
var inputTime = +new Date('2022-12-6 18:00:00'); // 返回的是用户输入时间总的毫秒数 这里需要的是,
// 需要的是填写当前自己的电脑上的时间以后的时间,不然会很奇怪
countDown(); // 我们先调用一次这个函数,防止第一次刷新页面有空白
// 2. 开启定时器
setInterval(countDown, 1000);
function countDown() {
var nowTime = +new Date(); // 返回的是当前时间总的毫秒数
var times = (inputTime - nowTime) / 1000; // times是剩余时间总的秒数
var h = parseInt(times / 60 / 60 % 24); //时
h = h < 10 ? '0' + h : h;
hour.innerHTML = h; // 把剩余的小时给 小时黑色盒子
var m = parseInt(times / 60 % 60); // 分
m = m < 10 ? '0' + m : m;
minute.innerHTML = m; // 设置分钟
var s = parseInt(times % 60); // 当前的秒
s = s < 10 ? '0' + s : s;
second.innerHTML = s; // 设置秒数
}
</script>
</body>
</html>