JS实现定时器
有趣的小案例池子:
JS实现定时器
JS实现关闭图片窗口
JS实现输入检验
获取焦点后隐藏提示内容的输入框
JS实现获取鼠标在画布中的位置
聊天信息框显示消息
JS点击切换背景图
自动切换背景的登录页面
JS制作跟随鼠标移动的图片
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>