Window对象-BOM相关操作

1.BOM(浏览器对象模型)

 

含义:  window 是内置中的全局对象,我们所学习的所有Web APIs 的知识内容都是基于window对象实现的

setInterval()  -- >  完整写法window.setInterval  (默认都是浏览器内)  

document是实现DOM的基础,它其实是依附于window的属性

(依附于window的属性可以省略)

2.定时器 -- 延时函数

间歇函数 : setInterval(function,1000) -- 1000ms 执行一次

延时函数 : 让代码延迟执行的函数,setTimeout

setTimeout ( 回调函数 , 等待的毫秒数

只执行一次,就是把一段代码延迟执行,省略window

let timer = setTimeout(回调函数,等待ms)
clearTimeout(timer)  // 也可以选择停止执行
    <button>解除炸弹</button>

    <script>
        let timer = setTimeout(function () {
            document.querySelector('body').style.backgroundColor = 'pink'
        },3000)  // 三秒之后执行
        // 可以停止
        let btn = document.querySelector('button')
        btn.addEventListener('click',function() {
            console.log('解除成功');
            clearTimeout(timer)
        })
        
    </script>

5s后自动关闭广告

<body>
    <div>
        5s后自动关闭广告
    </div>

    <script>
        // 设置广告5s之后自动消失
        let div = document.querySelector('div')

        // 设置一个倒计时
        let t = 5
        let timer = setInterval(function () {
            --t
            div.innerHTML = `
            ${t}s后自动关闭广告
            `
        },1000)

        setTimeout(function () {
            div.style.display = 'none'
            clearInterval(timer)
        },6000)
    </script>
</body>

2.1、递归函数

    <script>

        // 递归函数  -- 容易造成死递归 , 一定要记得加退出条件
        let num = 0;
        function fn() {
            num ++;
            console.log(num);
            if(num >= 100){
                return
            }
            // 函数里面一直调
            fn()

        }
        fn()
    </script>

2.2、利用递归实现setInterval

<body>
    
    <div class="d1"></div>

    <div class="d2"></div>
    <script>
        let d1 = document.querySelector('.d1')
         
        // 两种定时器 进行时间的输出
        function time() {
            d1.innerHTML = new Date().toLocaleString()
            setTimeout(time,1000)
        }
        time()


        let d2 = document.querySelector('.d2')
        // 直接用定时器来写
        setInterval(function () {
            d2.innerHTML = new Date().toLocaleString()
        },1000)
    </script>
</body>

结果显示

 setInterval的特征是重复执行,首次执行会延时

 setTimeout是延时执行,只执行一次

 setTimeout结合递归可以模拟serInterval进行执行

 3.JS执行机制

js是单线程 , 同一时间只能做一件事。

解决L

        为了解决这个问题,利用多核CPU的计算能力,HTML5提出标准。js 出现了 同步 异步

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值