js定时器

自动化的网页总离不开定时器


JS中定时器,有两种:setTimeout( function , time ) 、setInterval( function , time )

区别:

    setTimeout( function , time ) 用于延时执行 

    setInterval( function , time ) 用自动循环执行

这里延时执行不如自动循环执行常用

故不研究延时执行


setInterval( function , time )

    使用时,我们可以 window.setTimeout 或 setTimeout

    window.setTimeout 将 setTimeout 函数作为全局window对象的一个属性来引用

    且需要有clearInterval( timer ) 停止定时器

简单使用:


制作一个钟表

需求:

    每隔一秒获取当前时间,并在html中显示

html:

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>JS定时器</title>
	<link href="style.css" type="text/css" rel="stylesheet" />
	<script src="javascript.js"></script>
</head>
<body>
	<input type="text" id="input" />
	<button id="btn" onclick="stop()">停止</button>
</body>
</html>

CSS:

    省略

javascript:

//测试一下
//alert('js运行成功');

window.onload=function(){
	//获取DOM节点
	var input=document.getElementById('input');
	var btn=document.getElementById('btn');

	//设置定时器为循环定时器
	var timer=window.setInterval(clock,1000);    //定时器中引用外部的函数,不加括号
	//设置定时器要执行的函数
	function clock(){
		var d=new Date();
		var t=d.toLocaleTimeString();
		input.value=t;
	};

	//设置停止按钮的点击函数
	btn.onclick=function(){
		timer=window.clearInterval(timer);
	};
};

 小实例:

        做一个计时的秒表

/*
 *要求:
 * 1、获取DOM节点
 * 2、点击开始按钮事件
 * 1、显示定时器,每10毫秒的速度递增值
 * 2、值的显示为秒 10毫秒 除以 100 单位为秒
 * 3、开始按钮变成停止按钮
 * 4、重置按钮开始计时,不能点击
 * 5、点击按钮判断是开始还是停止再执行相应操作
 * 3、点击重置按钮事件
 * 1、使值变为0
*/

效果如图:

html:

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>JS定时器--秒表</title>
	<link href="style.css" type="text/css" rel="stylesheet" />
	<script src="javascript2.js"></script>
</head>
<body>
	<input type="text" id="input" />
	<button id="btn1" >开始</button>
	<button id="btn2" >重置</button>
</body>
</html>

CSS:

    省略

javascript:

window.onload=function(){
	//获取DOM节点
	var input = document.getElementById('input');
	var btn1 = document.getElementById('btn1');
	var btn2 = document.getElementById('btn2');

	//默认数值
	var time=0;
	var timer;
	input.value=time;

	//trun按钮函数
	btn1.onclick=function trun(){
		if(btn1.innerText=="开始"){
			btn1.innerText = "停止 ";
			btn2.disabled = true;
			timer = window.setInterval(star,10);
		}else{
			
			btn1.innerText = "开始" ;
			btn2.disabled = false;
			timer = window.clearInterval(timer); //timer is not definded  if里设置的计时器变量在else里不能使用
		};
	};
	//定时器函数
	function star(){
		time++;
		input.value = time/100 ;
	};
	//reset按钮函数
	btn2.onclick=function(){
		time = 0;
		input.value=time;
	};
}

总结与注意事项:

       1、 setInterval( 定时器函数 , 毫秒 )

                定时器函数不加括号

        2、clearInterval( 定时器变量 )

                注意设置定时器时的变量,能被清除时获取到

                如 if else 在if中声明的定时器变量,在else中无法获取到,导致不能清除定时器。



如有建议和疑问可联系 
QQ:1017386624 
邮箱:1017386624@qq.com

### JavaScript 定时器 `setTimeout` 和 `setInterval` 的使用方法 JavaScript 提供了两种主要的定时器函数:`setTimeout` 和 `setInterval`,它们用于延迟执行或周期性地执行一段代码。 #### 1. `setTimeout` `setTimeout` 函数用于在指定的时间后执行一次回调函数。其基本语法如下: ```javascript setTimeout(function, delay, param1, param2, ...); ``` - **function**: 要执行的回调函数。 - **delay**: 延迟的时间(以毫秒为单位)。 - **param1, param2, ...**: 可选参数,传递给回调函数。 例如: ```javascript function Fun3(str1) { alert(str1); } var timer = setTimeout(Fun3, 2000, "参数1"); // 2秒后弹出“参数1” clearTimeout(timer); // 清除定时器,防止执行 ``` 上述代码展示了如何设置一个定时器并在两秒后执行回调函数[^1]。如果需要提前停止定时器,可以使用 `clearTimeout` 方法[^3]。 #### 2. `setInterval` `setInterval` 函数用于每隔指定的时间间隔重复执行回调函数。其基本语法如下: ```javascript setInterval(function, delay, param1, param2, ...); ``` - **function**: 要执行的回调函数。 - **delay**: 每次执行之间的间隔时间(以毫秒为单位)。 - **param1, param2, ...**: 可选参数,传递给回调函数。 例如: ```javascript var counter = 0; var intervalId = setInterval(function () { console.log("计数:", counter++); if (counter > 5) { clearInterval(intervalId); // 当计数超过5时停止定时器 } }, 1000); // 每隔1秒执行一次 ``` 上述代码展示了如何设置一个每秒执行一次的定时器,并在满足条件时通过 `clearInterval` 方法停止定时器[^2]。 #### 区别与注意事项 - **执行次数**:`setTimeout` 只执行一次,而 `setInterval` 会不断重复执行直到被清除。 - **清除方法**:`setTimeout` 使用 `clearTimeout`,`setInterval` 使用 `clearInterval`。 - **返回值**:两者都会返回一个唯一的标识符,用于清除对应的定时器。 ### 示例代码 以下是一个结合 `setTimeout` 和 `setInterval` 的完整示例: ```javascript // 使用setTimeout setTimeout(() => { console.log("这是setTimeout输出"); }, 3000); // 使用setInterval let count = 0; const intervalId = setInterval(() => { console.log("当前计数:", count++); if (count > 5) { clearInterval(intervalId); // 停止计时器 } }, 1000); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值