当前位置: 首页 > article >正文

前端中--js定时器的用法SetTimeout

我们在创建一个网页的时候我们有时候为了要实现一个动态网页随时间变化网页内容产出变化的效果或者会用到定时器来实现数据实时更新、时间等时就需要在js代码中定义一个定时器来实现该功能.


Javascript中的定时器有两种,setInterval和setTimeout,而定时器的作用就是延迟执行。

两种函数定义的形式:

setInterval() :按照指定的周期(以毫秒计)来调用函数或计算表达式。方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。
setTimeout() :在指定的毫秒数后调用函数或计算表达式
在上式中expression既可以是字符串,也可以是匿名函数,或者也可以是一个函数名,第二个参数为延迟执行的时间. 

下面是两个实例:


<html>
<body><input type="text" id="clock" />
<script type="text/javascript">
var int=self.setInterval("clock()",1000);
function clock()
{
var d=new Date();
var t=d.toLocaleTimeString();
document.getElementById("clock").value=t;
}
</script><button onclick="int=window.clearInterval(int)">停止</button></body>
</html>


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body><p>点击按钮,在等待 3 秒后弹出 "Hello"。</p>
<button onclick="myFunction()">点我</button><script>
function myFunction()
{setTimeout(function(){alert("Hello")},3000);
}
</script></body>
</html>

以下实例在每 1000 毫秒执行 clock() 函数。实例中也包含了停止执行的按钮:

js常用的定时器方法有四个

  • setTimeout(“js语句”,定时时间)
  • setInterval(“js语句”,定时时间)
  • clearTimeout(需要停止的对象)
  • clearInterval(需要停止的对象)

注意:这里的定时时间单位都为毫秒
下面我们来看一下它们的用法:
setTimeout()
单次定时,即setTimeout的第一个参数的js语句只会定时实现一次
比如:
 

word = setTimeout("showWord()", 2000)

那么浏览器就会只在你调用setTimeout方法2秒后实现showWord方法,只实现一次不循环。将setTimeout赋值给word是为了方便清除,下面我们会提到。
我们来看一下效果:

 当然你还可以把函数方法写到setTimeout的参数中去。
比如:

var word = setTimeout(function() {s.innerHTML = "<p>我喜欢javacript</p>"
}, 3000)

setInterval()
循环定时,即setInterval的第一个参数的js语句只会定时实现无数次。
比如:

word = setInterval("showWord()", 2000)

浏览器会在你调用setInterval后每间隔2秒就会调用一次showWorld方法

同理如果你喜欢的话,也可以将函数写到参数中去

clearTimeout() 与 clearInterval()
两者用法一样,清除定时器对象,不过从名字可以看出,清除的定时器是与上面对应的,但其实是可以互用的,你们可以试试。现在我们来说说它们的用法。
比如前面的word:

clearInterval(word)

clearInterval就只有一个参数,即你要清除的定时器对象,当然clearTimeout的参数也是只有一个
效果在演示setInterval时已显示

补上showWord代码:

var showWord = () => {r = Math.random() * 254 + 1g = Math.random() * 254 + 1b = Math.random() * 254 + 1var s = document.getElementById("show")s.style.background = "rgb(" + r + "," + g + "," + b + ")"s.innerHTML = "<p>我喜欢javacript</p>"
}

http://www.lryc.cn/news/2418519.html

相关文章:

  • Web窗体的基本控件
  • Linux格式化命令
  • weblogic漏洞:CNVD-C-2019-48814
  • 日语
  • 【STM32F042】使用NTC热敏电阻实现温度测量
  • 360手机官方刷机教程(N5系列通用)
  • linux 命令:top 详解
  • 比特率(码率) = 采样率 (Sampling rate ) * 位深 (Bit depth)* 声道数目/Opus/AAC/mp3
  • 人工智能常用的优化算法(梯度下降、牛顿法、拟牛顿法、共轭梯度法、)
  • 奇迹按键精灵挂机脚本_按键精灵做连击脚本(奇迹MU战士用)
  • 计算机专业术语e-mail是什么意思,E-mail是什么意思?
  • msvcrtd.dll下载安装方法是什么?快速修复msvcrtd.dll的手段
  • Windows RC版、RTM版、OEM版、RTL版、VOL版的区别
  • 未能加载文件或程序集“System.Data.SQLite, Version=1.0.84.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139”或它
  • Julia的安装与配置详解(包含在Ubuntu 18
  • [android开发必备]Android开发者社区汇总
  • sql获取每一个类别中值最大的一条数据
  • 优秀网站源码、编程源码下载网站大集中(转载-自己用)
  • Asp.Net期末课程设计——个人财务管理系统(C#)(mysql或sqlserver)
  • 设定行车路线实验matlab,基于遗传算法的无时限多配送中心车辆调度问题研究
  • 爬虫小白看过来!详细的Python爬虫分析和案例展示
  • 最好用的WiFi密码共享APP推荐(能查看已连接WiFi密码)
  • Visifire WPF 图表控件 破解
  • MySQL里有2000万条数据,但是Redis中只存20万的数据,如何保证redis中的数据都是热点数据?
  • 思科模拟器--02.静态路由和默认路由配置24.5.15(24.5.20补)
  • ubuntu下安装杀毒软件Antivir
  • 2024年最全OpenGL学习脚印 使用索引绘图(index drawing),2024年最新玩转MySQL
  • 【网络奇缘】- 如何自己动手做一个五类 以太网 RJ45 网络电缆(1)
  • 数据库入口和密码:维普、万方和cnki(转)
  • codeblocks 汉化教程