BOM系列第一篇之定时器setTimeout和setInterval

yizhihongxing

BOM系列第一篇之定时器setTimeout和setInterval

一、概述

在前端开发中,我们经常需要在页面中加入一些动态效果,比如定时轮播图、倒计时等等,而这些效果往往需要用到JavaScript定时器。在JavaScript中,我们可以使用setTimeout()和setInterval()两个函数来实现定时器。

setTimeout()函数可以在一定时间后执行一次特定的代码,而setInterval()函数可以每隔一定时间重复执行一段特定的代码,常见的应用场景有轮播图、计时器等。

二、使用setTimeout()

before code

console.log("before setTimeout");

setTimeout(() => {
  console.log("in setTimeout");
}, 1000);

console.log("after setTimeout");

after code

第一个代码块会先输出"before setTimeout"和"after setTimeout",然后等待1秒钟后输出"in setTimeout"。如上代码中,setTimeout()的第一个参数是一个回调函数,在定时器完成后执行,第二个参数表明要等待的时间,单位为毫秒。

setTimeout()的返回值是一个定时器ID,如果需要取消定时器,可以调用clearTimeout()方法,传入该定时器ID即可。

例如,我们可以使用setTimeout()函数实现一个简单的倒计时,代码如下:

let time = 10;
let timer = setTimeout(() => {
  if (time > 0) {
    time -= 1;
    console.log(`${time} seconds remaining.`);
  } else {
    console.log("Time's up!");
    clearTimeout(timer);
  }
}, 1000);

三、使用setInterval()

before code

let counter = 0;
let interval = setInterval(() => {
  console.log(`current count:${counter}`);
  counter++;
  if (counter > 5) {
    clearInterval(interval);
  }
}, 1000);

after code

setInterval()用于定时重复执行一段代码,与setTimeout()相似,第一个参数仍然是一个回调函数,第二个参数代表执行间隔时间,也是以毫秒为单位的。setInterval()同样返回一个定时器ID,用于取消定时器,使用clearInterval()方法。

下面是一个实现轮播图自动切换的例子,代码如下:

<html>
  <head>
    <style>
      #slider {
        width: 400px;
        height: 300px;
        overflow: hidden;
      }
      .slide {
        width: 400px;
        height: 300px;
        float: left;
        text-align: center;
        font-size: 30px;
        line-height: 300px;
      }
      .slide:nth-child(1) {
        background-color: red;
      }
      .slide:nth-child(2) {
        background-color: green;
      }
      .slide:nth-child(3) {
        background-color: blue;
      }
      .slide:nth-child(4) {
        background-color: yellow;
      }
      .slide:nth-child(5) {
        background-color: purple;
      }
    </style>
  </head>
  <body>
    <div id="slider">
      <div class="slide">1</div>
      <div class="slide">2</div>
      <div class="slide">3</div>
      <div class="slide">4</div>
      <div class="slide">5</div>
    </div>
    <button onclick="start()">Start</button>
    <button onclick="stop()">Stop</button>
    <script>
      let slider = document.getElementById("slider");
      let slides = slider.querySelectorAll(".slide");
      let currentIndex = 0;
      let interval = null;
      start();
      function start() {
        if (interval) {
          clearInterval(interval);
        }
        interval = setInterval(() => {
          currentIndex = currentIndex + 1 >= slides.length ? 0 : currentIndex + 1;
          apply(currentIndex);
        }, 2000);
      }
      function stop() {
        clearInterval(interval);
      }
      function apply(index) {
        for (let i = 0; i < slides.length; i++) {
          slides[i].style.display = i === index ? "block" : "none";
        }
      }
    </script>
  </body>
</html>

使用setInterval()函数实现了自动切换轮播图,每隔2秒钟调用一次apply()方法,实现自动切换。同时,为了让用户手动控制轮播图的切换,添加了“Start”和“Stop”两个按钮,实现对定时器ID的控制。

通过上述示例,我们可以看到使用定时器可以快速实现网页的动态效果,给用户带来更好的交互体验。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:BOM系列第一篇之定时器setTimeout和setInterval - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 21个值得收藏的Javascript技巧

    下面就是“21个值得收藏的Javascript技巧”的完整攻略。 1. 使用变量解构(destructuring)来简化你的代码 解构可以让你从一个数据结构中将数据提取到单独的变量中,从而简化你的代码。示例: const obj = { a: 1, b: 2, c: 3 }; // 使用解构简化代码 const { a, b } = obj; console…

    JavaScript 2023年5月18日
    00
  • JavaScript中实现sprintf、printf函数

    在JavaScript中,有时候需要格式化字符串输出,针对此需求,可以使用sprintf、printf函数来实现。 sprintf函数的实现 sprintf函数的作用是将指定的格式化字符串输出到一个字符串中。JavaScript中没有原生实现sprintf函数的方法,但是可以通过自定义实现函数来达到此目的。 下面是一个使用sprintf函数实现字符串格式化输…

    JavaScript 2023年5月27日
    00
  • jquery.validate使用攻略 第二部

    我来详细讲解一下 “jquery.validate使用攻略 第二部”的完整攻略,步骤如下: 一、准备工作 下载 jquery.validate.js 插件,并引入到项目中。 引入依赖的库文件,如 jquery 库文件。 二、基本使用 引入 jquery.validate.js 插件后,在需要验证的表单元素上添加验证规则,如下: “`html “` jav…

    JavaScript 2023年6月11日
    00
  • 使用JQUERY Tabs插件宿主IFRAMES

    使用JQUERY Tabs插件宿主IFRAMES是一种常见的网页开发技巧,可以实现在同一页面中切换不同的网页内容而不用刷新整个页面,提高用户的操作体验。下面是使用JQUERY Tabs插件宿主IFRAMES的完整攻略及示例说明。 下载和引入JQUERY库和JQUERY Tabs插件 首先,需要从官方网站下载最新版本的JQUERY库和JQUERY Tabs插件…

    JavaScript 2023年6月10日
    00
  • Javascript中的delete介绍

    当我们在JavaScript中创建一个对象或者函数时,它们都会被存储在内存中,而使用 delete 关键字可以删除对象的某个属性或者函数。本文将详细讲解 delete 的用法,以及可能会遇到的问题。 语法 delete object.propertyName delete object[expression] delete object.functionNa…

    JavaScript 2023年6月10日
    00
  • javascript 流畅动画实现原理

    JavaScript 实现流畅动画的原理是通过不断地更新元素的位置或样式来实现视觉上的连续性,使元素看起来像是在不断地移动或变化。 常见的实现流畅动画的方式是通过 setInterval 或 requestAnimationFrame 不断地调用函数,来更新元素的位置或样式。在函数中,可以通过改变元素的 CSS 属性,来实现实时更新元素的效果。 其中,使用 …

    JavaScript 2023年6月10日
    00
  • JS实现可拖曳、可关闭的弹窗效果

    实现可拖拽、可关闭的弹窗效果需要借助JavaScript和CSS的帮助。主要的实现步骤如下: 步骤一:HTML结构 先定义一个弹窗的HTML结构,包括一个模态框、一个标题、一个内容和两个关闭按钮: <div class="modal"> <div class="modal-header"> &l…

    JavaScript 2023年6月11日
    00
  • JS实现的base64加密解密操作示例

    针对“JS实现的base64加密解密操作示例”的完整攻略,我给出以下详细讲解: 什么是base64? Base64是一种基于64个可打印字符来表示二进制数据的表示方法,主要用于在HTTP协议下传输数据和加密算法中的一种实现方式。 base64加密和解密原理 加密:将二进制数据按照6位一组分成若干组(不足6位以0补全),然后按照这些组所代表的数值在Base64…

    JavaScript 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部