目录
setTimeout
setInterval
删除定时器
定时器使用建议
示例 (轮播图js):
耽搁定时器,在指定耽搁毫秒数结束后再执行函数
function:要执行的函数
delay_mesc:耽搁的毫秒数
*arg:传给执行函数的参数
return:返回定时器ID(timeoutID)
周期定时器,指定周期时间间隔来重复执行函数
function:要执行的函数
cyc_msec:周期时间间隔
*args:传给执行函数的参数
return:返回定时器ID(intervalID)
## 耽搁定时器
var timeoutID = setTimeout(myFunc,1000);
clearTimeout(timeoutID); // 根据定时器ID来清除
## 周期定时器
var intervalID = setInterval(myFunc,1000);
clearInterval(intervalID); // 根据定时器ID来清除
## 清除所有定时器(了解即可,一般不用)
同一页面上的定时器ID从1开始一次递增,且setTimeout和intervalID共用该递增变量;
而且clearTimeout和clearInterval可以交换使用(两个方法都可以用来删除两种定时器);
所以知道最后一个定时器ID数值(我们自己在js末尾定义),就可以遍历删除页面所有的定时器;
var end_id = setTimeout(function(){});
for (var i=1;i<=end_id;i++){
clearnInterval(i);
}
采用定时器ID变量顶置的方法,即在顶部声明定时器ID变量,后面再具体赋值,这样我们可以实现某个定时器操作的开始与终止(设置与删除)
//定义初始变量
var run_index = 0; // 当前轮播图索引
var timer_id; // 定时器id//获取下选择元素
get_choice = document.querySelectorAll('.down_choice');
//获取img外div元素
get_div = document.querySelector('.lbt_up');// 轮播
function slider_img(run_index) {get_choice.forEach((el)=>{el.classList.remove('active');});get_div.style.transform = `translateX(-${run_index * 800}px)`;get_choice[run_index].classList.add('active');}//定时器跑轮播图
function run_timer() {timer_id = setInterval(() => {if (run_index <= 3) {console.log(run_index);slider_img(run_index)} else {run_index = -1}run_index++;}, 1500);
}//移入,修改run_index并删除定时器
get_choice.forEach((el,index)=>{el.onmouseover =()=>{run_index = index;slider_img(run_index);clearInterval(timer_id);// 移出,设置定时器并还原轮播图状态el.onmouseout = ()=>{run_timer();}}
});// 执行定时器
run_timer();