JS 定时器(hhhhhh)

本文介绍了JavaScript中的定时器,包括定时器的基本概念、延迟定时器与间歇定时器的使用,以及setTimeout和setInterval的区别。同时,讨论了定时器的同步异步特性,并讲解了如何停止定时器,强调了停止定时器对性能的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.定时器

1.1 定时器的基本概念

  • 定时器的分类

    • 延迟定时器

      • 语法: ms 延迟一段时间执行函数一次

      • 作用:等待一定的时间后执行一次

      • 使用场景:广告弹窗

    • 间歇定时器

      • 语法:setInterval(函数,时间) 隔一段时间执行函数一次

      • 作用: 隔一段时间执行函数一次

      • 使用场景:轮播图,倒计时,抽奖

1.2 setTimeout

  • setTimeout(函数,时间) :等待一定的时间后执行一次,一般用于广告弹窗

    /* 
      语法:setTimeout(函数,时间) ms:等一定的时间执行函数一次
           1s = 1000ms
    */
    setTimeout(function(){
        console.log("setTimeout(函数,时间) ms:等一定的时间执行函数一次");
    },2000); 
    ​
    //函数可以直接写到setTimeout中,也可以提前定义好
    setTimeout(delay,3000);
    function delay(){
        console.log("哈哈哈哈哈");
    }

1.3 setInterval

  • setInterval(函数,时间) 隔一段时间执行函数一次,一般用于轮播图,倒计时,抽奖

    //语法:setInterval(函数,时间) ms:间隔一段是执行函数一次
    document.body.innerHTML = 1;
    var n = 1;
    ​
    setInterval(function(){
        n++;
        document.body.innerHTML = n;
    },1000);

  • 同步异步

    • 同步:在做某一个事件的时候,其他操作只能等待 独木桥

      //同步:在做某一个事件的时候,其他操作只能等待   独木桥
      alert("fd");
      console.log("开始");
      for(var i = 0;i<1000;i++){
          console.log("i");
      }
      console.log("结束");

    • 异步:在做某一个事情的时候,可以去做其他操作 定时器

      // 异步:在做某一个事情的时候,可以去做其他操作   定时器
      console.log(1);
      setTimeout(function(){
          console.log("定时器");
      },1000);
      console.log(2);

1.4 停止定时器

  • 停止定时器

    停止定时器:定时器只要一开始就不会主动停止,可以强制停止
    为什么停止:占用空间,影响性能
    语法:clearInterval(intervalId)
          clearTimeout(intervalId)
    intervalId:每一个定时器在开启的时候,都会返回一个能唯一标识当前定时器的id
  • 例1: 定时器停止的是下一次的执行

    //2.点击按钮,开始倒计时
    
    oBtn.onclick = function(){
        var n = 5;
        oBtn.innerHTML = "5s后重新获取验证码";
        var timer = setInterval(function(){
            n--;
            if(n <= 0) {
                n = 0;
                //停止定时器
                clearInterval(timer);
            }
            oBtn.innerHTML = n + "s后重新获取验证码";
        },1000);
    }

  • 移入停止离开开启:定时器只要一清除,就没有了

  • //1.获取元素
    var oImg = document.getElementsByTagName("img")[0];
    var n = 1;
    ​
    //2.自动切换
    var timer = setInterval(auto, 1000);  //1
    function auto() {
        n++;
        if (n > 4) { n = 1 }
        oImg.src = "./img/" + n + ".jpg";
    }
    ​
    ​
    //3.鼠标移入停止定时器
    oImg.onmouseover = function () {
        clearInterval(timer);
    }
    ​
    //4.鼠标移出重新开始定时器
    oImg.onmouseout = function () {
        //每一次开启的定时器的id都不一样,一定要更新timer的id值
        timer = setInterval(auto,1000); //2  3
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值