JavaScript 定时器使用

定时器:让网页无人值守的自动执行操作
何时使用:
只要希望网页无人值守时,也可执行操作,就必须使用定时器

2种:
1. 周期性定时器:按照一定时间间隔,反复执行相同任务
何时使用周期性定时器:连续移动或连续变化
2. 一次性定时器:先等待一定时间,再执行一次!自动结束
何时使用一次性定时器:先等待,再执行一次时

如何使用定时器:3件事
1. 每次做什么事:function*
2. 何时开始,间隔多长时间
var timer=null;//一般定义在全局,保存线程号
语法:timer=setInterval(方法名,间隔毫秒数)
1. 创建异步子线程,不影响主线程的操作
2. 返回新子线程的线程号
3. 立刻启动定时器
事件:window.οnlοad=function(){…}
页面加载完成后触发
3. 何时结束:
clearInterval(timer);
timer=null;

一次性定时器用法和周期性定时器用法完全一样!
var timer=null;//全局的
启动:timer=setTimeout(方法名,等待的毫秒数);
停止:(取消等待)clearTimerout(timer); timer=null;

以下是一个用计时器完成的一个小案例:计算当前时间距离放学时间的倒计时程序

HTML代码如下:

<!DOCTYPE html>
<html>
 <head>
  <title>倒计时</title>
  <meta charset="utf-8"/>
  <script src="js/4_1.js"></script>
 </head>

 <body>
    <h1>距离放学还有<span id="time"></span></h1>
    <button id="btn">停止倒计时</button>
 </body>
</html>

以下是JS代码:

//定义计算倒计时的任务函数
function calc(){
    var now=new Date();//获得当前时间,保存在now中
    //自定义目标时间对象,封装2015/12/18 18:30,保存在变量target中
    var target=new Date("2015/12/18 18:30");
    var ms=target-now;//target-now,保存在变量ms中
    //找到id为time的span,保存在变量span中
    var span=document.getElementById("time");
    if(ms>0){//如果ms>0
        //将ms换算成还差h小时m分s秒:
        var h=parseInt(ms/1000/3600);
        var m=parseInt((ms-h*1000*3600)/1000/60);
        var s=parseInt(ms/1000)%60;
        s<10&&(s="0"+s);//如果s<10,就前补0
        m<10&&(m="0"+m);//如果m<10,就前补0
        h<10&&(h="0"+h);//如果h<10,就前补0
        //将span的内容设置为h:m:s
        span.innerHTML=h+":"+m+":"+s;
    }else{//否则(如果时间晚于target,就不再倒计时)
        clearInterval(timer);// 停止定时器
        timer=null;
        span.innerHTML="00:00:00";//设置时间显示为00:00:00
    }
}
var timer=null;//保存定时器的序号
window.onload=function(){
    timer=setInterval(calc,-1000);//创建周期性定时器,执行的周期间隔时间为:1000ms
    document.getElementById("btn").onclick=function(){
        //this-->button
        if(timer){
            clearInterval(timer);
            timer=null;
            this.innerHTML="启动倒计时";
            var span=document.getElementById("time");
            span.innerHTML=
                span.innerHTML.replace(/\s+/g,":");
        }else{
            timer=setInterval(calc,-1000);
            this.innerHTML="停止倒计时";
        }
    };
}

运行后的网页效果如下:

这里写图片描述

JavaScript中,常用的定时器方法有四个:setTimeout、setInterval、clearTimeout和clearInterval。 setTimeout函数用于在指定的时间后执行一次JavaScript代码。它的格式为setTimeout("js语句", 定时时间),其中定时时间的单位是毫秒。例如,使用setTimeout的语法如下: setTimeout(function(){ console.log("炸弹定时器,到达时间后执行"); }, 5000); 这段代码会在5秒后执行一次console.log语句。 setInterval函数用于按照指定的时间间隔重复执行一段JavaScript代码。它的格式为setInterval(函数, 时间),其中时间的单位是毫秒。例如,使用setInterval的语法如下: var i = 0; setInterval(function(){ console.log(i); i++; }, 1000); 这段代码会每隔1秒钟输出一次i的值,并将i的值加1。 如果需要停止定时器的执行,可以使用clearTimeout和clearInterval函数。它们的格式分别为clearTimeout(需要停止的对象)和clearInterval(需要停止的对象)。例如,使用clearTimeout和clearInterval的语法如下: var num1 = setTimeout(function(){}, 时间); var num2 = setInterval(function(){}, 时间); clearTimeout(num1); clearInterval(num2); 这段代码会先定义两个定时器对象num1和num2,然后通过调用clearTimeout和clearInterval函数来关闭对应的定时器。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [简述js定时器的用法](https://blog.csdn.net/suorce/article/details/82841781)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Javascript定时器使用方法](https://blog.csdn.net/qq_57340195/article/details/124441862)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值