15、计时器方法1(setInterval、clearInterval)

简介: 15、计时器方法1(setInterval、clearInterval)

计时器方法(setInterval、setTimeout)


计时器方法
设置计时器(每n秒输出) setInterval
取消计时器 clearInterval
设置计时器(n秒后输出) setTimeout
取消计时器 clearTimeout



2、创建计时器(setInterval


    // 1、setInterval:计时器
    var timer = setInterval(() => {
      console.log('Hello world!');
    }, 2000)


3、取消计时器(clearInterval

    // 2、clearInterval:暂停计时器
    var btn = document.querySelector('.case1 button');
    btn.onclick = function () {
      clearInterval(timer);
    }

4、计时器显示时针(setInterval)

    // 3、计时器显示时针:setInterval
    var h1 = document.querySelector('.case2 h1');
    setInterval(() => {
      let time = new Date();
      let hours = time.getHours();
      let minutes = time.getMinutes();
      let seconds = time.getSeconds();
      let timeNow = `${hours}:${minutes}:${seconds}`;
      h1.innerHTML = timeNow;
    }, 1000);


5、计时器显示时间(开始、暂停、结束)

// 4、时间(开始、暂停、结束)
    var timer1 = document.querySelector('.case3 h1');
    var start = document.querySelector('.case3 .start');
    var pause = document.querySelector('.case3 .pause');
    var stop = document.querySelector('.case3 .end');
    var seconds = 0;
    var ms = 0;
    // 显示时间
    timer1.innerHTML = `${seconds}:${ms}`;
    // 计时器
    var timer2 = null;
    // 4.1、开始计时器
    start.onclick = function () {
      // 先清空计时器
      clearInterval(timer2);
      // 设置计时器
      timer2 = setInterval(() => {
        if (ms === 9) {
          ++seconds;
          ms = 0;
        }
        ++ms;
        timer1.innerHTML = `${seconds}:${ms}`;
      }, 100)
    }
    // 4.2、暂停计时器
    pause.onclick = function () {
      clearInterval(timer2);
    }
    // 4.3、结束计时器
    stop.onclick = function () {
      seconds = 0;
      ms = 0;
      timer1.innerHTML = `${seconds}:${ms}`;
    }

7、源代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <!-- 1-2、计时器 -->
  <div class="case1">
    <button>暂停计时器</button>
  </div>
  <!-- 3、时针 -->
  <div class="case2">
    <h1>时针</h1>
  </div>
  <!-- 4、时间(开始、暂停、结束) -->
  <div class="case3">
    <h1>时针</h1>
    <button class="start">开始</button>
    <button class="pause">暂停</button>
    <button class="end">结束</button>
  </div>
  <script>
    // 1、setInterval:计时器
    var timer = setInterval(() => {
      console.log('Hello world!');
    }, 2000)
    // 2、clearInterval:暂停计时器
    var btn = document.querySelector('.case1 button');
    btn.onclick = function () {
      clearInterval(timer);
    }
    // 3、计时器显示时针:setInterval
    var h1 = document.querySelector('.case2 h1');
    setInterval(() => {
      let time = new Date();
      let hours = time.getHours();
      let minutes = time.getMinutes();
      let seconds = time.getSeconds();
      let timeNow = `${hours}:${minutes}:${seconds}`;
      h1.innerHTML = timeNow;
    }, 1000);
    // 4、时间(开始、暂停、结束)
    var timer1 = document.querySelector('.case3 h1');
    var start = document.querySelector('.case3 .start');
    var pause = document.querySelector('.case3 .pause');
    var stop = document.querySelector('.case3 .end');
    var seconds = 0;
    var ms = 0;
    // 显示时间
    timer1.innerHTML = `${seconds}:${ms}`;
    // 计时器
    var timer2 = null;
    // 4.1、开始计时器
    start.onclick = function () {
      // 先清空计时器
      clearInterval(timer2);
      // 设置计时器
      timer2 = setInterval(() => {
        if (ms === 9) {
          ++seconds;
          ms = 0;
        }
        ++ms;
        timer1.innerHTML = `${seconds}:${ms}`;
      }, 100)
    }
    // 4.2、暂停计时器
    pause.onclick = function () {
      clearInterval(timer2);
    }
    // 4.3、结束计时器
    stop.onclick = function () {
      seconds = 0;
      ms = 0;
      timer1.innerHTML = `${seconds}:${ms}`;
    }
    // 5、节流:每隔1秒执行一次(setInterval)
    var timer = null;
    window.onscroll = function () {
      // 先清空计时器,防止计时器叠加
      clearInterval(timer);
      timer = setInterval(() => {
        console.log('节流');
      }, 1000);
    }
  </script>
</body>
</html>


相关文章
|
3月前
使用requestAnimationFrame模拟实现setTimeout和setInterval
`rafTimeout` 函数采用 `requestAnimationFrame` 实现延时或周期性调用,提供与 `setTimeout` 和 `setInterval` 类似的功能。接受参数包括要执行的函数 `fn`、延迟时间 `delay`(默认 0ms)及是否周期执行 `interval`(默认为单次执行)。返回值为包含 `id` 的对象,可用于取消定时器。通过 `cancelRaf` 或 `cancelAnimationFrame` 方法可取消对应的 `rafTimeout` 定时器。
139 2
使用requestAnimationFrame模拟实现setTimeout和setInterval
|
前端开发
setInterval
setInterval
42 0
|
消息中间件 JavaScript 前端开发
setTimeout和setInterval
setTimeout和setInterval
手写系列 # 2:利用 requestAnimationFrame 实现 setInterval 计时器
手写系列 # 2:利用 requestAnimationFrame 实现 setInterval 计时器
316 0
手写系列 # 2:利用 requestAnimationFrame 实现 setInterval 计时器
16、计时器方法2(setTimeout、clearTimeout、防抖、节流)
16、计时器方法2(setTimeout、clearTimeout、防抖、节流)
115 0
|
JavaScript
BOM 定时器:setTimeout和setInterval
BOM 定时器:setTimeout和setInterval
200 0
间隔调用方法(setInterval与setTimeout)
js中实现函数间隔调用,延时调用的方法。 setInterval(方法名,间隔时间)方法可按照指定的周期(以毫秒计)来调用函数或计算表达式 方法会不停地调用函数。 setTimeout()方法用于在指定的毫秒数后调用函数或计算表达式。
13478 0
|
JavaScript 前端开发 Java