目录

前言

setTimeout

setTimeout()函数应用之点名器

setInterval

setInterval应用之重写点名器


前言

在生活中,常有定时做某事,或者循环做某事的需求,如设置2个小时煲汤,饲料机器定时、不断地的投喂物料。在js代码世界里,我们也需要定时或者循环干某件事,由此需要用到js中内置的两个函数:setTimeout、setInterval

setTimeout()函数是一个延迟函数,只执行一次。

setInterval()函数是一个循环函数,会重复执行。

setTimeout

setTimeout(函数f, 毫秒数m):等待m毫秒数后,执行函数f,并返回定时器ID。

    <script>let startTime = new Date()setTimeout(function () {let endTime = new Date()console.log('2')console.log('endTime-startTime: ', endTime - startTime)}, 1000)console.log('1')</script>
结果:

setTimeout()函数类似于一个异步函数,它使得程序不会按照步骤执行,因此首先打印字符串1,程序运行1秒后,打印字符串2,并输出程序运行的时间。

setTimeout()函数应用之点名器

目标:点击开始点名按钮,屏幕上每间隔400毫秒打印一个人名,再次点击按钮时,暂停点名。

思路:

  1. 使用Math.random、Math.floor内置对象随机输出一个人名。
  2. 在输出人名函数中,循环调用setTimeout()函数。
  3. clearTimeout(定时器ID):可以停止定时器。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>点名器</title><style>*{margin: 0;padding: 0;}#container{margin: 0 auto;width: 350px;background-color: #cccccc;}#main{height: 200px;text-align: center;line-height: 200px;font-size: large;color: red;}#footer{height: 30px;}</style>
</head>
<body><div id="container"><div id="main">准备好了吗?开始点名了!!!</div><div id="footer"><button id="desc" style="font-size: 18px;margin-left: 140px;" onclick="btn()">开始点名</button></div></div><script>var nameLists = ['张三', '李四', '王五', '赵六', '小明', '小红', '小方']var time = nullfunction show() {let index = Math.floor(Math.random()*nameLists.length)document.getElementById('main').innerHTML = nameLists[index]time = setTimeout('show()', 200)}function btn() {if (time == null) {document.getElementById('desc').innerHTML = '停止点名'show()} else {clearTimeout(time)time = nulldocument.getElementById('desc').innerHTML = '开始点名'}}</script>
</body>
</html>

setInterval

setInterval函数与setTimeout函数用法非常相似。

setInterval(函数f, 毫秒数m):每间隔m毫秒,就执行函数f,其返回值是定时器ID。

通过clearInterval(定时器ID),也可以停止该定时器。

    <script>let startTime = new Date()setInterval(function () {let endTime = new Date()console.log('2')console.log('endTime-startTime: ', endTime - startTime)}, 1000)console.log('1')</script>

结论:基本上每隔1秒就输出字符串2。和setTimeout函数相比,它是循环执行的。

setInterval应用之重写点名器

<script>var nameLists = ['张三', '李四', '王五', '赵六', '小明', '小红', '小方']var time = nullfunction show() {let index = Math.floor(Math.random()*nameLists.length)document.getElementById('main').innerHTML = nameLists[index]}function btn() {if (time == null) {document.getElementById('desc').innerHTML = '停止点名'time = setInterval('show()', 200)} else {clearInterval(time)time = nulldocument.getElementById('desc').innerHTML = '开始点名'}}</script>

JS中的setTimeout和setInterval函数相关推荐

  1. js中计时器setTimeout、setInterval、requestAnimationFrame区别

    转载自:https://www.cnblogs.com/xiaohuochai/p/5777186.html 本文仅用于作为学习笔记 计时器一直是javascript动画的核心技术.而编写动画循环的关 ...

  2. JS中的变量提升和函数提升

    console.log(a); var a = 1 如上面代码中可以看出,由于JS是从上到下一行行的执行,因此很多人看到这一串代码的时候,会认为由于log之前没有定义a,因此会输出underfind, ...

  3. js中的SetTimeOut

    1. SetTimeOut()              1.1 SetTimeOut()语法例子              1.2 用SetTimeOut()执行Function           ...

  4. js基础之setTimeout与setInterval原理分析

    setTimeout与setInterval概述 setTimeout与setInterval是JavaScript引擎提供的两个定时器方法,分别用于函数的延时执行和循环调用.前者的主要思想是通过一个 ...

  5. JavaScript 中的 setTimeout 和 setInterval 方法

    有时您不希望函数立即运行.您希望它重新执行,甚至在特定时间间隔后重复运行.JavaScript 为我们提供了两种实现方法: setTimeout 和 setInterval.下面,我们将来理解这两个方 ...

  6. AS3中,setTimeOut、setInterval、Timer区别

    setTimeOut:设置超时时间,只会执行一次! setInterval:设置一个间隔时间,间隔多久会触发一次!除非remove,否则会永久执行下去! Timer:设置一个间隔时间,有次数限制,只执 ...

  7. js中变量名提升和函数名提升

    首先,js中变量没有块级作用域,但是有函数作用域,即只有函数可以约数变量的作用域. 并且,函数的实质也是一个变量,所以可以改变它的值,即赋值.所以变量名提升和函数名提升非常相像. 1.变量名的提升发生 ...

  8. 关于JS中的setTimeout()

    1.setTimeout()基础 setTimeout函数用来指定某个函数或某段代码,在多少毫秒之后执行.它返回一个整数,表示定时器的编号,以后可以用来取消这个定时器. var timerId = s ...

  9. js中的变量提升和函数提升——精炼版

    javaScript中用var定义变量时存在变量提升(ES6及之后的let/const定义变量时为块级作用域无变量提升,ES6之前js没有块级作用域),比如: console.log(a); // 不 ...

最新文章

  1. emc celerra(一)--界面概览
  2. laravel实现数据库读写分离配置或者多读写分离配置
  3. Excel打开csv文件显示乱码问题解决方法
  4. 机器学习-非监督分类算法之关联规则
  5. CF767C Garland
  6. 科技文明等级那一级有量子计算机,人类科技在宇宙中属于几级文明,最高级文明多强?...
  7. nit计算机应用基础是考试大纲,NIT考试大纲--计算机应用基础.doc
  8. soapui和cxf的却别_根据wsdl文件用soapUi快速构建webService服务(有图有真相)
  9. Nginx系列1之部分模块详解
  10. python函数执行顺序_python下for循环接if判断的函数执行顺序
  11. python selenium 下拉列表_Selenium+Python之下拉菜单的定位
  12. Eigen按行或列求和的使用
  13. 54 搜索引擎及Lucene基础、elasticsearch使用基础、ES使用详解、ES查询及Logstash入门...
  14. 万年历c语言代码3000年,求万年历代码!
  15. Javaweb在线视频学习网站的设计与实现
  16. 工程施工工地进度监控带天气经纬度相机(监理日志不再难写)
  17. 打印出从1到1000的罗马数字
  18. 魔都职场外卖(加班)大赏
  19. linpack测试软件,【分享】linpack ——intel的pc算力测试软件
  20. 嵌入式课程设计:socket通信模拟服务器客户端实现文件传送(基于c++语言)

热门文章

  1. 学生认证,专业版pycharm
  2. VulnHub FunBox Writeup
  3. nova3root版,nova3最新版本
  4. 【2017 4 12 总结】
  5. 今天给大家分享使用Scratch做一个抛物运动研究之愤怒的炮弹!
  6. 我国的 五岳 是哪五座山,分别在哪个省
  7. 满屋研选获1亿元B轮融资,华创资本领投,五岳资本、金地集团、治平资本等跟投... 1
  8. 计算机毕业设计Node.js+Express社区生鲜电商平台(源码+程序+lw+远程调试)
  9. html--盒子的边框属性(border)
  10. 打印后台程序服务没有运行