JavaScript实现的计时器效果

之前做过电商网站倒计时的效果,今天在倒计时的基础上,把代码修改了一下,改为计时器效果,实现了以下功能:
1.点击“开始”后,按秒计时且“开始”文字变为“停止”;
2.点击“停止”,计时停止,文字变为“开始”;
3.再点击“开始”,计时器从0开始重新计时。
效果如图所示:
在这里插入图片描述
“开始”和“停止”使用div标记实现,利用innerHTML改变其中的文字内容。

<div class="startTime">开始</div>  <!-- 单击开始,再单击停止 -->
<div class="dispTime"></div>  <!-- 显示计时器的部分 -->

在这里插入图片描述
完整代码如下:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>计时器</title>
		<style type="text/css">
			.startTime {
				cursor: pointer;
				font-size: 30px;
				border: 1px solid #ccc;
				border-radius: 10px;
				width: 120px;
				margin: 10px auto;
				text-align: center;
			}
			.startTime:hover{
				background-color: aliceblue;
			}
			.dispTime {
				position: absolute;
				font-size: 60px;
		    	left: 50%;
      	        top: 30%;
			    transform: translate(-50%, -50%);
				color:red;
			}
		</style>
	</head>
	<body>
		<div class="startTime">开始</div>  <!-- 单击开始,再单击停止 -->
		<div class="dispTime"></div>  <!-- 显示计时器的部分 -->
		<script>
			var startTime = document.querySelector('.startTime');
			var dispTime = document.querySelector('.dispTime');
			var times =0;             //全局变量,从0开始计时,初始值为0
			var timer = null;         //全局变量,初始值为空
			startTime.addEventListener('click', function(){
				if(this.innerHTML=='开始'){
                    times = 0;                 //清除之前的时间,从0开始重新 计时
					timer = setInterval(countTime, 1000);     //开启定时器,前面不能加关键字var ,那会变成局部变量,定时器不能清除,不会从0开始
					this.innerHTML='停止';   //文本设置为停止
				}
				else{
				clearInterval(timer);       //停止定时器
				this.innerHTML='开始';      //文本设置为开始
				}
			});
	//countTime()函数把总秒数显示为时、分、秒效果
			function countTime() {
					var hh = parseInt(times / 60 / 60 );
					hh = hh < 10 ? '0' + hh : hh;
					var mm = parseInt(times / 60 % 60);
					mm = mm < 10 ? '0' + mm : mm;
					var ss = parseInt(times % 60);
					ss = ss < 10 ? '0' + ss : ss;
					dispTime.innerHTML=  hh + ':' + mm + ':' + ss;
				times++;
			}
		</script>
	</body>
</html>

在这段代码中,刚开始实现的时候,没有把timer设置为全局变量,而是在函数中使用了var关键字,这样timer是局部变量,结果定时器无法停止。后来去掉关键字var,timer成为全局变量好了,于是最后把timer放在函数外,直接定义为全局变量,这样程序可读性好一些。

		var  timer = setInterval(countTime, 1000);   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值