深入理解setTimeout函数和setInterval函数


Posted in Javascript onMay 20, 2016

 前几天学了js,看到了两个非常有趣的函数,他们分别是setTimeout函数和setInterval函数,这两个函数能使网页呈现非常一些网页中比较常见的效果,比如说图片轮播,等一些非常好玩的效果。下面就来一起来了解这两个函数吧!

一setTimeout函数和setInterval函数的语法以及应用

1.setTimeout函数

定义和用法:setTimeout()方法用于在指定的毫秒数后调用函数或计算表达式。

语法:setTimeout(code,millisec);

参数:

code (必需):要调用的函数后要执行的 JavaScript 代码串。

millisec(必需):在执行代码前需等待的毫秒数。

提示:

setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。

返回值

一个可以传递给 Window.clearTimeout() 从而取消对 code 的周期性执行的值。

既然setTimeout是一个定时器函数,那么就有一个一个函数来清理定时器,那我们就用到了clearTimeout函数。

clearTimeout(setTimeout()返回的ID值);

2.setInterval定义

setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。

setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。

语法

setInterval(code,millisec[,"lang"]);

参数code必需。要调用的函数或要执行的代码串。

millisec必须。周期性执行或调用 code 之间的时间间隔,以毫秒计

返回值

一个可以传递给 Window.clearInterval() 从而取消对 code 的周期性执行的值。

既然setTimeout是一个定时器函数,那么就有一个一个函数来清理定时器,那我们就用到了clearInterval()函数。

clearInterval()(setInterval()返回的ID值);

二.案例:

倒计时效果

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <title>倒计时效果</title>
  <script type="text/ecmascript">
    //使用js方式实现倒计时效果
    var t1;
    window.onload = function () {
     
      //01定位到开始按钮返回一个dom对象
      var btns = document.getElementById('btnStart');
      //02.给开始按钮注册单击事件
      btns.onclick = function () {
        //执行ssetInerval函数第一个参数要定时执行的函数,第二个参数该函数每个多少毫秒执行一次
        t1= setInterval(start, 1000);

      }
      //03定位到停止按钮返回一个dom对象
      var btnst = document.getElementById('btnStop');
      btnst.onclick = function () {
        clearInterval(t1);
      }
    }
    //要隔1秒执行的函数
    function start() {
      //01.获取div中的文本赋值给一个变量
      var divdom = document.getElementById('msg');
      var divnum = divdom.innerText;
      //判断divnum的值是否为0
      if (divnum > 0) {
        divnum--;
        //把减过的值重新赋值给divnum
        divdom.innerText = divnum;
      }
    }
  </script>
</head>
<body>
  <input type="button" id="btnStart" value="开始" />
  <input type="button" id="btnStop" value="停止" /><br />
  <div id="msg">10</div>

</body>
</html>

背景图片切换:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <title></title>
  <script type="text/javascript">
    var count = 1;//定义初始变量默认为第一张图片
    window.onload = function () {
      //使用定时器函数每隔一秒定义执行一次show函数
      setInterval(show,1000);
    }
    //要执行的函数
    function show() {
      //如果图片到达最后一张(5张),就将下一张显示的图片改为第一张,如果没有到达最后一张就将显示下一张图片
      if (count > 5) {
        count = 1;
      }
      else {
        count++;
      }
      //获取id为myimg的dom对象
      var dom = document.getElementById("myimg");
      //改变img标签的src属性指向,改变图片
      dom.src = "image/"+count+".jpg"
    }

  </script>
</head>
<body>
  <img src="image/1.jpg" alt="Alternate Text" width="200px" height="200px" id="myimg" />
</body>
</html>

点名器

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <title></title>
  <script type="text/javascript">
    //定义一个数组保存该点名器中的基本数据
    var data = ['张三', '李四', '王二', '小陈', '小张'];
    var i = 0;//声明一个初始变量默认让第一个人显示在页面上
    var t1;
    window.onload = function () {
      //02.获取开始点名按钮的dom对象给该对象注册单击事件
      var dom = document.getElementById("mybtn");
      dom.onclick = function () {
        //使用setInterval函数隔500毫秒调用一次result函数
        t1 = setInterval(start, 500);
        //该方法隔6秒他只调用一次
        setTimeout(stop,6000);
      }
      //定义一个匿名函数把他赋值给一个变量result
       var start= function() {
        //03获取h1标签对象,给h1标签的文本赋值
        var domh = document.getElementById("myh1");
        domh.innerText = data[i % data.length];//替换已存在,元素值
        i++;
       }
      //调用匿名函数
       start();
       var stop = function () {
         //清除定时器
         clearInterval(t1);
         //弹出提示框点到的同学请作答
         alert("请" + document.getElementById("myh1").innerText+"同学作答");
       }
      
    }
</script>
</head>
<body>
  <h1 id="myh1"></h1>
<button id="mybtn"> 开始点名</button>

</body>

</html>

通过上面的几个案例,我相信大家一点对这两个函数应该不陌生了。

以上这篇深入理解setTimeout函数和setInterval函数就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于jquery的文本框与autocomplete结合使用(asp.net+json)
May 30 Javascript
jQuery中prependTo()方法用法实例
Jan 08 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
Feb 26 Javascript
jquery使用remove()方法删除指定class子元素
Mar 26 Javascript
javascript图片预加载实例分析
Jul 16 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
Dec 18 Javascript
jQuery 获取select选中值及清除选中状态
Dec 13 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
Mar 30 Javascript
详解AngularJs HTTP响应拦截器实现登陆、权限校验
Apr 11 Javascript
node.js中cluster的使用教程
Jun 09 Javascript
从对象列表中获取一个对象的方法,依据关键字和值
Sep 20 Javascript
JavaScript实现职责链模式概述
Jan 25 Javascript
JavaScript基础教程——入门必看篇
May 20 #Javascript
jQuery选择器及jquery案例详解(必看)
May 20 #Javascript
Jquery $when done then的用法详解
May 20 #Javascript
jQuery添加和删除输入文本框标签代码
May 20 #Javascript
jQuery通过deferred对象管理ajax异步
May 20 #Javascript
Bootstrap3学习笔记(三)之表格
May 20 #Javascript
快速获取/设置iframe内对象元素的几种js实现方法
May 20 #Javascript
You might like
php数组声明、遍历、数组全局变量使用小结
2013/06/05 PHP
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
javascript控制Div层透明属性由浅变深由深变浅逐渐显示
2013/11/12 Javascript
js实现鼠标感应图片展示的方法
2015/02/27 Javascript
JS实现网页顶部向下滑出的全国城市切换导航效果
2015/08/22 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
JavaScript中rem布局在react中的应用
2015/12/09 Javascript
基于jQuery实现点击最后一行实现行自增效果的表格
2016/01/12 Javascript
JavaScipt选取文档元素的方法(推荐)
2016/08/05 Javascript
jQuery+HTML5+CSS3制作支持响应式布局时间轴插件
2016/08/10 Javascript
微信js-sdk上传与下载图片接口用法示例
2016/10/12 Javascript
Bootstrap Search Suggest使用例子
2016/12/21 Javascript
jQuery Validate 无法验证 chosen-select元素的解决方法
2017/05/17 jQuery
react 创建单例组件的方法
2018/04/26 Javascript
vue-cli 首屏加载优化问题
2018/11/06 Javascript
JavaScript基础之静态方法和实例方法分析
2018/12/26 Javascript
小试小程序云开发(小结)
2019/06/06 Javascript
使用layer弹窗提交表单时判断表单是否输入为空的例子
2019/09/26 Javascript
js实现拖拽与碰撞检测
2020/09/18 Javascript
[01:08:57]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第二场
2014/05/24 DOTA
[01:09:50]VP vs Pain 2018国际邀请赛小组赛BO2 第二场
2018/08/20 DOTA
numpy中实现ndarray数组返回符合特定条件的索引方法
2018/04/17 Python
python 平衡二叉树实现代码示例
2018/07/07 Python
python实战教程之自动扫雷
2018/07/13 Python
对python调用RPC接口的实例详解
2019/01/03 Python
python 基于TCP协议的套接字编程详解
2019/06/29 Python
python中adb有什么功能
2020/06/07 Python
Python3如何使用range函数替代xrange函数
2020/10/05 Python
HTML5 3D书本翻页动画的实现示例
2019/08/28 HTML / CSS
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
如何减少垃圾回收让内存更加有效使用
2013/10/18 面试题
竞聘书模板
2014/03/31 职场文书
摩登时代观后感
2015/06/03 职场文书
2016年小学六一儿童节活动总结
2016/04/06 职场文书
幼儿园大班教师评语
2019/06/21 职场文书
JS高级程序设计之class继承重点详解
2022/07/07 Javascript