js实现计时器操作

问题:

使用js实现计时器操作

设计思路:

  • 这个倒计时是不断变化的,因此需要定时器来自动变(setInterval)
  • 三个黑色盒子里面分别存放时分秒
  • 三个黑色盒子利用innerHTML 放入计算的小时分钟秒数
  • 第一次执行也是间隔毫秒数,因此刚刷新页面会有空白
  • 最好采取封装函数的方式,这样可以先调用一次这个函数,防止刚开始刷新页面有空白问题

代码:

<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>计时器</title>
    <style>
        div {width: 130px;
            margin: 200px;
        }
        
        span {
            display: inline-block;
            width: 40px;
            height: 40px;
            background-color: #333;
            font-size: 20px;
            color: #fff;
            text-align: center;
            line-height: 40px;
        }
		hr {
			position: absolute;
			width: 127px;
			float: left;
			margin-top: 20px;
			z-index: 9999;
		}
    </style>
</head>

<body>
    <div>
		<hr >
        <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('2021-1-16 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>

效果预览:
js实现计时器操作

上一篇:JavaScript 10 DOM


下一篇:三种创建元素方式的区别