js定时器

定时器

js中内置的一个方法

作用

每隔一段时间或者延迟一段时间就执行一段指定的代码

定时器的分类

重复执行定时器

setInterval()

作用

每隔一段时间就会重复执行指定的函数 

语法

setInterval(function(){
      代码
},时间)

参数

要执行的函数:时间到了就会执行

时间:间隔的时间

单位:毫秒

1s=1000ms

<style>
        #box{
            width: 100px;
            height: 100px;
            border: 1px solid red;
            font-size: 50px;
        }
    </style>
    <script>
    window.onload=function(){
        var box=document.getElementById("box");
        var i=0;

        box.onclick=function(){
            setInterval(function(){
                box.innerHTML=i;
                i++;
            },1000);
           
        };
    };
</script>
</head>

<body>
   <div id="box"></div>
</body>
<style>
        #box{
            width: 100px;
            height: 100px;
            border: 1px solid red;
            font-size: 50px;
        }
    </style>
    <script>
    window.onload=function(){
        var box=document.getElementById("box");
        var i=0;

        box.onclick=function(){
          setInterval(change,1000);
           //函数在外面定义,这里调用需要用函数名,没有括号()
        };
        function change(){
            i++;
            box.innerHTML=i;
        }
    };
</script>
</head>

<body>
   <div id="box"></div>
</body>

延迟执行定时器

setTimeout()

作用:延迟执行定时器执行指定函数,只执行一次

语法

setTimeout(function(){
        代码
},时间);

参数

要执行的函数:当时间到达后会执行这个函数

时间:延迟时间

代码和重复执行定时器很相似

   <style>
        #box{
            width: 100px;
            height: 100px;
            border: 1px solid red;
            font-size: 50px;
        }
    </style>
    <script>
    window.onload=function(){
        var box=document.getElementById("box");
        var i=0;

        box.onclick=function(){
            setTimeout(function(){
            i++;
            box.innerHTML=i;
            },1000);
           
        };
       
    };
</script>
</head>
<body>
   <div id="box"></div>
</body>

定时器里的this指向

定时器的this指向window的,因为定时器是window身上的一个方法,所以this指向window

<style>
        #box{
            width: 100px;
            height: 100px;
            border:1px solid #f00;
        }
    </style>
    <script>
        window.onload=function(){
            var box=document.getElementById("box");
            var i=0;
            console.log(this);    //window
            box.onclick=function(){
                console.log(this); //box
                var This=this;//把box存给This,函数内部可以调用
                setInterval(function(){
                    console.log(this); //window
                    i++;
                    box.innerHTML=i;
                },1000);
            };
        }
    </script>
</head>
<body>
    <div id="box"></div>
</body>

清除定时器

定时器的编号

定时器的一个返回值,返回一个数字,代表当前定时器的编号,我们可根据这个来清除定时器

它返回的编号在不同的浏览器里面是不同的,所以没办法直接拿编号去清除定时器

清除定时器的方法

1.清除重复执行定时器

clearInterval(定时器的返回值)

可以声明一个变量,把定时器的返回值都存到这个变量里,然后拿这个变量去清除定时器

   <style>
        #box{
            width: 100px;
            height: 100px;
            border:1px solid #f00;
        }
    </style>
  
    <script>
        var n=0;
        function add(){
            n++;
            console.log(n);
            //清除定时器的条件一般会放在定时器执行的函数里
            if(n==8){
                //clearInterval(1);
                clearInterval(timer);
            }
        }
        var timer=setInterval(add,1000);
        // console.log(setInterval(add,1000)setInterval(add,1000));//1
        // setInterval(add,1000);
        //定时器在走的过程中,下面代码也会走
        alert(1);
        if(n==8)
    </script>
</head>
<body>
    <div id="box"></div>
</body>

                         1.直接把定时器调用放在一个变量赋值的后面,定时器会走吗?

                                timer使用的时候,定时器已经跑了八次了,页面代码已经跑完了

                         var timer=setInterval(add,1000);

                        2.这个timer是在下面声明的,而使用是在上面,可以用到嘛?

2.清除延迟执行定时器

clearTimeout (定时器的返回值)

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

隐藏用户y

虽然不是很有才华,但是渴望打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值