JavaScript 定时器使用

来源:互联网 发布:网络音箱哪个牌子好 编辑:程序博客网 时间:2024/05/01 05:12

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

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

如何使用定时器:3件事
1. 每次做什么事:function*
2. 何时开始,间隔多长时间
var timer=null;//一般定义在全局,保存线程号
语法:timer=setInterval(方法名,间隔毫秒数)
1. 创建异步子线程,不影响主线程的操作
2. 返回新子线程的线程号
3. 立刻启动定时器
事件:window.onload=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="停止倒计时";        }    };}

运行后的网页效果如下:

这里写图片描述

0 0
原创粉丝点击