JS定时器的介绍与使用

周期性定时器

setInterval():按照指定的周期(以毫秒计)来调用函数或计算表达式。方法会不停地调用函数,
直到 clearInterval() 被调用或窗口被关闭。

周期性定时器(计时器):每隔一段时间 执行一段代码
特点:一旦开启 就会永久执行,只能手动停止

setInterval(参数1,参数2)
参数1:回调函数 (就是执行代码)
参数2:时间间隔 (单位是ms
setInterval有一个返回值 就是timeID(定时器ID)

clearInterval(定时器ID):清除定时器
定时器的ID: 在页面可以开启多个定时器 那么浏览器为了区分这些定时器,每当开启
一个定时器的时候,浏览器就会给这个定时器一个唯一的编号,那么这个编号就是定时器的ID

<button id="start">开始</button>
<button id="end">结束</button>
  var timeID;
		   //点击开始计时
		   document.getElementById("start").onclick=function(){
			   var num=0;
			   timeID=setInterval(function(){
			   			   console.log(num++);
			   },1000);
		   }
		   //清除定时器
		   document.getElementById("end").onclick=function(){
			   clearInterval(timeID)
		   }

一次性定时器

setTimeout():在指定的毫秒数后调用函数或计算表达式,一次性的,时间到就执行。

开启一次性定时器
		var timeID=setTimeout(function(){
			console.log(123);
		},3000)

clearTimeout():清除定时器,一般很少用

clearTimeout(timeID);

案例

京东秒杀倒计时

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style type="text/css">
			.seckill .seckill-header .time {
				width: 300px;
				height: 37px;
				position: absolute;
				top: 9px;
				left: 20px;
				background-color: red;
				text-align: center;
			}

			.seckill .seckill-header .time span.span-time {
				display: inline-block;
				width: 35px;
				height: 37px;
				background: #000000;
				font-size: 24px;
				color: #ffffff;
				line-height: 37px;
				text-align: center;
				font-weight: 900;
				border-radius: 3px;
			}

			.span-txt {
				color: white;
			}

			.span-point {
				font-size: 24px;
				font-weight: 900;
			}
		</style>
	</head>
	<body>
		<div class="seckill">
			<div class="seckill-header">
				<div class="time">
					<span class="span-txt">当前场次</span>
					<span class="span-time" id="spanHour">03</span>
					<span class="span-point">:</span>
					<span class="span-time" id="spanMin">30</span>
					<span class="span-point">:</span>
					<span class="span-time" id="spanSec">00</span>
					<span class="span-txt">后结束抢购</span>
				</div>
			</div>
		</div>
	</body>
	<script type="text/javascript">
		/*
		需求分析:
		开启重复计时器
		1.获取页面元素文本内容
		2.秒数--
		3.当s<0,s=59,m--;
		4.当m<0,m=59,h--;
		5.如果h m s小于10,在前面拼一个0  
			注意:不要使用字符串去和数字做计算,一般需要先数字
		6.将计算好的s m h赋值给元素文本
		
		*/

		setInterval(function() {
			//1.获取页面元素文本内容
			var Hour = document.getElementById("spanHour");
			var Min = document.getElementById("spanMin");
			var Sec = document.getElementById("spanSec");

			//取元素的文本
			var h = Hour.innerText;
			var m = Min.innerText;
			var s = Sec.innerText;

			//2.秒数--
			s--;

			//3.当s<0,s=59,m--
			if (s < 0) {
				s = 59;
				m--;
			}

			//4.当m<0,m=59,h--;
			if (m < 0) {
				m = 59;
				h--;
			}


			//5.如果h m s小于10,在前面拼一个0
			
			h=+h;//h=parseInt(h);
			m=+m;//m=parseInt(m);
			s=+s;//s=parseInt(s);
			
			
			
			
			// if (h < 10) {
			// 	h = "0" + h;
			// }
			// if (m < 10) {
			// 	m = "0" + m;
			// }
			// if (s < 10) {
			// 	s = "0" + s;
			// }
			
			
			h=h<10?("0"+h):h;
			m=m<10?("0"+m):m;
			s=s<10?("0"+s):s;

			//6.将计算好的s m h赋值给元素文本
			Hour.innerText=h;
			Min.innerText=m;
			Sec.innerText=s;


		}, 1000)
	</script>
</html>
发布了26 篇原创文章 · 获赞 5 · 访问量 1056

猜你喜欢

转载自blog.csdn.net/weixin_45060872/article/details/105025021