JavaScript基础(35)_window对象方法:定时器

window对象属性

主要属性:

document:对Document对象的只读引用。
history:对History对象的只读引用。
location:对于窗口或框架的Location对象。

主要方法:

setInterval()
setInterval(参数1,参数2):定时调用。 可以将一个函数,每隔一段时间执行一次。
参数:
参数1:回调函数,该函数会每隔一段时间被调用一次。
参数2:每次调用间隔的时间,单位是毫秒。

返回值:
返回一个Number类型的数据,这个数字用来作为定时器的唯一标识

clearInterval()
clearInterval()可以用来关闭一个定时器。方法中需要一个定时器的标识作为参数,这样将关闭对应的定时器。

var num = 1;
var timer = setInterval()(function(){
count.innerHTML = num++;
if(num ==11){
clearInterval(timer);
}
},1000)

注意:
1、clearInterval()可以接收任意参数,如果参数是一个有效的定时器的标识,则停止对应的定时器。如果参数不是一个有效的标识,则什么也不做
2、开启定时器之前,需要将当前元素上的其他定时器关闭,这样可避免多个定时器触发。

setTimeout()
延时调用,延时调用一个函数不会马上执行,而是隔一段时间以后再执行,而且只会执行一次。

var timer = setTimeout(function(){console.log(num++);},3000);

clearTimeout()
关闭延时调用。

clearTimeout(timer);

延时调用和定时调用:
1、定时调用会执行多次,而延时调用只会执行一次。
2、延时调用和定时调用实际上是可以相互代替的,在开发中可以根据自己需要去选择。

案例:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>优化后,添加了定时器的"键盘移动div"</title>
    <style>
        .box1 {
            width: 100px;
            height: 100px;
            background-color: aquamarine;
            position: absolute;
        }
    </style>
    <script>
        window.onload = function () {
            var box1 = document.getElementsByClassName("box1")[0];
            document.onkeydown = function (event) {
                speed = 10;
                // 按下ctrl后速度加快
                if (event.ctrlKey) {
                    speed = 100;
                }
                flag = event.keyCode;
            }

            setInterval(function () {
                switch (flag) {
                    // 向左
                    case 37:
                        if (box1.offsetLeft >= 18) {
                            box1.style.left = box1.offsetLeft - speed + "px";
                        }
                        // 碰到左上边界禁止div变大或变小
                        else { box1.style.left = box1.offsetLeft + "px"; }
                        break;
                    // 向上
                    case 38:
                        if (box1.offsetTop >= 18) {
                            box1.style.top = box1.offsetTop - speed + "px";
                        }
                        // 碰到左上边界禁止div变大或变小
                        else { box1.style.top = box1.offsetTop + "px"; }
                        break;
                    // 向右
                    case 39:
                        box1.style.left = box1.offsetLeft + speed + "px"; break;
                    // 向下
                    case 40:
                        box1.style.top = box1.offsetTop + speed + "px"; break;
                }
            }, 30);

            document.onkeyup = function(){
                flag = 0;
            }
        }
    </script>
</head>

<body>
    <div class="box1"></div>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值