浅谈JavaScript的计时器对象


Posted in Javascript onDecember 26, 2016

1、JavaScript计时器,我们可以在设定的时间间隔之后来执行代码,而不是在函数被调用后立即执行。

计时器类型:

1)一次性计时器:仅在指定的延迟时间之后触发一次。

2)间隔性触发计时器:每隔一定的时间间隔就触发一次。

计时器方法:

1)setInterval() :在执行时,从载入页面后每隔指定的时间执行代码。

浅谈JavaScript的计时器对象

//语法
setInterval(代码,交互时间);

//参数说明:1. 代码:要调用的函数或要执行的代码串。2. 交互时间:周期性执行或调用表达式之间的时间间隔,以毫秒计(1s=1000ms)。

//返回值:一个可以传递给 clearInterval() 从而取消对"代码"的周期性执行的值。

//调用函数格式:(假设有一个clock()函数):
setInterval("clock()",1000)
//或
setInterval(clock,1000)

//例子
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>计时器</title>
<script type="text/javascript">
 var int=setInterval(clock, 1000)//调用计时器
 function clock(){
  var time=new Date();
  document.getElementById("clock").value = time;
 }
</script>
</head>
<body>
 <form>
  <input type="text" id="clock" size="50" />
 </form>
</body>
</html>

 2)取消计时器clearInterval():clearInterval() 方法可取消由 setInterval() 设置的交互时间。

//语法
clearInterval(id_of_setInterval)

//参数说明:id_of_setInterval:由 setInterval() 返回的 ID 值。

//例子
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>计时器</title>
<script type="text/javascript">
  function clock(){
   var time=new Date();           
   document.getElementById("clock").value = time;
  }
// 每隔100毫秒调用clock函数,并将返回值赋值给i
   var i=setInterval("clock()",100);
</script>
</head>
<body>
 <form>
  <input type="text" id="clock" size="50" />
  <input type="button" value="Stop" onclick="clearInterval(i)" />
 </form>
</body>
</html>
//每隔 100 毫秒调用 clock() 函数,并显示时间。当点击按钮时,停止时间

3) setTimeout()计时器,在载入后延迟指定时间后,去执行一次表达式,仅执行一次。

//语法
setTimeout(代码,延迟时间);

//参数说明:1. 要调用的函数或要执行的代码串。2. 延时时间:在执行代码前需等待的时间,以毫秒为单位(1s=1000ms)。

//例子1
//打开网页3秒后,在弹出一个提示框
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
 setTimeout("alert('Hello!')", 3000 );
</script>
</head>
<body>
</body>
</html>

//例子2
//当按钮start被点击时,setTimeout()调用函数,在5秒后弹出一个提示框
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
function tinfo(){
 var t=setTimeout("alert('Hello!')",5000);
 }
</script>
</head>
<body>
<form>
 <input type="button" value="start" onClick="tinfo()">
</form>
</body>
</html>

//例子3
//创建一个运行于无穷循环中的计数器,需要编写一个函数来调用其自身。在下面的代码,当按钮被点击后,输入域便从0开始计数
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
var num=0;
function numCount(){
 document.getElementById('txt').value=num;
 num=num+1;
 setTimeout("numCount()",1000);
 }
</script>
</head>
<body>
<form>
<input type="text" id="txt" />
<input type="button" value="Start" onClick="numCount()" />
</form>
</body>
</html>

4) 取消计时器clearTimeout(), setTimeout()和clearTimeout()一起使用,停止计时器。

//语法
clearTimeout(id_of_setTimeout)

//参数说明:id_of_setTimeout:由 setTimeout() 返回的 ID 值。该值标识要取消的延迟执行代码块。

//例子:添加了一个 "Stop" 按钮来停止这个计数器
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
 var num=0,i;
 function timedCount(){
  document.getElementById('txt').value=num;
  num=num+1;
  i=setTimeout(timedCount,1000);
 }
  setTimeout(timedCount,1000);
 function stopCount(){
  clearTimeout(i);
 }
</script>
</head>
<body>
 <form>
  <input type="text" id="txt">
  <input type="button" value="Stop" onClick="stopCount()">//停止按钮
 </form>
</body>
</html>

setinterval与settimeout区别:

1)因为setTimeout(表达式,延时时间)在执行时,是在载入后延迟指定时间后,去执行一次表达式,记住,次数是一次;而setInterval(表达式,交互时间)则不一样,它从载入后,每隔指定的时间就执行一次表达式 所以,完全是不一样的

2)很多人习惯于将setTimeout包含于被执行函数中,然后在函数外再次使用setTimeout来达到定时执行的目的;这样,函数外的setTimeout在执行函数时再次触发setTimeout从而形成周而复始的定时效果。

3)使用的时候各有各的优势,使用setInterval,需要手动的停止tick触发。而使用方法中嵌套setTimeout,可以根据方法内部本身的逻辑不再调用setTimeout就等于停止了触发。

//setTimeout例子
showTime();
function showTime(){
  var day = new Date();
  alert("时间是: " + day.toString());
  setTimeout("showTime()", 1000);
}

//setInterval例子
setInterval("showTime()", 1000);
function showTime(){
  var day = new Date();
  alert("时间是: " + day.toString());
}

这两种方法可能看起来非常像,而且显示的结果也会很相似,不过两者的最大区别就是,setTimeout方法不会每隔1秒钟就执行一次showTime函数,它是在每次调用setTimeout后过1秒钟再去执行showTime函数。这意味着如果showTime函数的主体部分需要2秒钟执行完,那么整个函数则要每3秒钟才执行一次。而setInterval却没有被自己所调用的函数所束缚,它只是简单地每隔一定时间就重复执行一次那个函数。

如果要求在每隔一个固定的时间间隔后就精确地执行某动作,那么最好使用setInterval,而如果不想由于连续调用产生互相干扰的问题,尤其是每次函数的调用需要繁重的计算以及很长的处理时间,那么最好使用setTimeout。

如果对计时函数不加以处理,那么setInterval将会持续执行相同的代码,一直到浏览器窗口关闭,或者用户转到了另外一个页面为止。不过还是有办法可以终止setTimeout和setInterval函数的执行。

以上就是小编为大家带来的浅谈JavaScript的计时器对象全部内容了,希望大家多多支持三水点靠木~

Javascript 相关文章推荐
this[] 指的是什么内容 讨论
Mar 24 Javascript
javascript使用activex控件的代码
Jan 27 Javascript
jquery Mobile入门—多页面切换示例学习
Jan 08 Javascript
Javascript 计算字符串在localStorage中所占字节数
Oct 21 Javascript
javascript基于原型链的继承及call和apply函数用法分析
Dec 15 Javascript
js原生方法被覆盖,从新赋值原生的方法
Jan 02 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
Aug 17 Javascript
vue动态改变背景图片demo分享
Sep 13 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
Feb 27 jQuery
说说Vuex的getters属性的具体用法
Apr 15 Javascript
vue请求本地自己编写的json文件的方法
Apr 25 Javascript
JS指定音频audio在某个时间点进行播放
Nov 28 Javascript
js模糊查询实例分享
Dec 26 #Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
Dec 26 #Javascript
jQuery实现可移动选项的左右下拉列表示例
Dec 26 #Javascript
关于javascript事件响应的基础语法总结(必看篇)
Dec 26 #Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
Dec 26 #Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
Dec 26 #Javascript
原生JS实现图片轮播效果
Dec 26 #Javascript
You might like
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
2016/10/20 PHP
PHP设计模式之工厂模式详解
2017/10/24 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
JScript中使用ADODB.Stream判断文件编码的代码
2008/06/09 Javascript
JQuery文本框高亮显示插件代码
2011/04/02 Javascript
兼容IE和Firefox火狐的上下、左右循环无间断滚动JS代码
2013/04/19 Javascript
使用js判断TextBox控件值改变然后出发事件
2014/03/07 Javascript
JS实现的车标图片提示效果代码
2015/10/10 Javascript
快速掌握Node.js中setTimeout和setInterval的使用方法
2016/03/21 Javascript
JavaScript数据结构链表知识详解
2016/11/21 Javascript
详解微信小程序 登录获取unionid
2017/06/27 Javascript
一文快速详解前端框架 Vue 最强大的功能
2019/05/21 Javascript
微信小程序之下拉列表实现方法解析(附完整源码)
2019/08/23 Javascript
antd design table更改某行数据的样式操作
2020/10/31 Javascript
Python 序列化 pickle/cPickle模块使用介绍
2014/11/30 Python
python爬虫之百度API调用方法
2017/06/11 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
2018/11/29 Python
python获取url的返回信息方法
2018/12/17 Python
python Selenium实现付费音乐批量下载的实现方法
2019/01/24 Python
Django视图扩展类知识点详解
2019/10/25 Python
jupyter修改文件名方式(TensorFlow)
2020/04/21 Python
Python实现疫情通定时自动填写功能(附代码)
2020/05/27 Python
Python自动化操作实现图例绘制
2020/07/09 Python
详解Python中如何将数据存储为json格式的文件
2020/11/18 Python
10个示例带你掌握python中的元组
2020/11/23 Python
德国高性价比网上药店:medpex
2017/07/09 全球购物
Myprotein加拿大官网:欧洲第一的运动营养品牌
2018/01/06 全球购物
文明村创建实施方案
2014/03/27 职场文书
质量承诺书格式
2014/05/20 职场文书
一年级语文下册复习计划
2015/01/17 职场文书
长江七号观后感
2015/06/11 职场文书
2019年教师节祝福语精选,给老师送上真诚的祝福
2019/09/09 职场文书
《女娲补天》读后感5篇
2019/12/31 职场文书
如何用JavaScipt测网速
2021/05/09 Javascript
详解使用 CSS prefers-* 规范提升网站的可访问性与健壮性
2021/05/25 HTML / CSS
企业开发CSS命名BEM代码规范实践
2022/02/12 HTML / CSS