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代码如下:


<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 定时器使用_第1张图片

你可能感兴趣的:(JavaScript,javascript,定时器)