1

JavaScript BOM-对象

顶级对象window

常见的加载事件

  • onload 当文档全部加载完成会触发(包括图像、脚本文件、CSS 文件等); 传统注册方式只能写一个,多个以最后一个为准;如果使用addEventListener则没有限制
  • DOMContentLoaded 事件触发时,仅当DOM加载完成,不包括样式表,图片,flash等等。
<script>

    // 第一种
    window.onload = function () {
        alert('111')
    };
    window.addEventListener('load', function () {
        alert('222')
    }); // 不影响

    document.addEventListener('DOMContentLoaded', function() {
        alert(33); // 不加载图片等
    })


</script>
示例代码
定时器
  1. setTimeout()   只执行一次
  2. setInterval()    反复执行

setTimeout() 定时器

开启定时器

  • window.setTimeout(调用函数, [延迟毫秒数])
<script>
    function callback() {
        console.log('111');
    }

    var tinner1 = setTimeout(callback, 2000);
    var tinner2 = setTimeout(callback, 3000);

</script>
示例代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <img src="ad.jpg" alt="" class="ad">
    <script>
        var img = document.querySelector('.ad');
        setTimeout(function () {
            img.style.display = 'none';
        },2000)

    </script>
</body>

</html>
案例-关闭广告

停止定时器

  • clearTimeout(TimeoutID)
<button>关闭定时器</button>
<script>
    var timer = setTimeout(function () {
        console.log('111');
    }, 1000);

    var btn = document.querySelector('button');
    btn.addEventListener('click', function () {
        clearTimeout(timer)
    })

</script>
示例代码

setInterval() 定时器

开启定时器

  • window.setInterval(调用函数, [延迟毫秒数])

停止定时器

  • clearInterval(TimeoutID)
<button>关闭定时器</button>
<script>
    var timer = setInterval(function () {
        console.log(111);
    }, 1000);
    var btn = document.querySelector('button');
    btn.onclick = function () {
        clearInterval(timer) // 关闭定时器
    }

</script>
示例代码

注意:

  • 第一次执行间隔毫秒之后执行,所有最好执行一次封装的函数,防止开始刷新页面的空白问题
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        div {
            margin: 200px;
        }

        span {
            display: inline-block;
            width: 40px;
            height: 40px;
            background-color: #333;
            font-size: 20px;
            color: #fff;
            text-align: center;
            line-height: 40px;
        }
    </style>
</head>

<body>
    <div>
        <span class="hour">1</span>
        <span class="minute">2</span>
        <span class="second">3</span>
    </div>
    <script>
        // 1. 获取元素
        var hour = document.querySelector('.hour'); // 小时的黑色盒子
        var minute = document.querySelector('.minute'); // 分钟的黑色盒子
        var second = document.querySelector('.second'); // 秒数的黑色盒子
        var inputTime = +new Date('2020-3-18 18:00:00'); // 返回的是用户输入时间总的毫秒数
        countDown(); // 我们先调用一次这个函数,防止第一次刷新页面有空白
        // 2. 开启定时器
        setInterval(countDown, 1000);

        function countDown() {
            var nowTime = +new Date(); // 返回的是当前时间总的毫秒数
            var times = (inputTime - nowTime) / 1000; // times是剩余时间总的秒数
            var h = parseInt(times / 60 / 60 % 24); //时
            h = h < 10 ? '0' + h : h;
            hour.innerHTML = h; // 把剩余的小时给 小时黑色盒子
            var m = parseInt(times / 60 % 60); // 分
            m = m < 10 ? '0' + m : m;
            minute.innerHTML = m;
            var s = parseInt(times % 60); // 当前的秒
            s = s < 10 ? '0' + s : s;
            second.innerHTML = s;
        }
    </script>
</body>

</html>
案例-秒杀倒计时
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    手机号码:<input type="number"> <button>发送</button>

    <script>
        var btn = document.querySelector('button');
        var time = 30;
        btn.addEventListener('click', function () {
            btn.disabled = true;  // 这里防止用户多次点击
            var inner = setInterval(function () {
                if (time == 0){
                    btn.disabled = false;
                    // 清除定时器
                    clearInterval(inner);
                    btn.innerHTML = '发送'
                } else {
                    btn.innerHTML = time + '秒';
                    time--
                }
            }, 1000)
        })


    </script>
</body>
</html>
案例-手机验证码倒计时
location 对象

对象属性:

重点:href和search

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <button>点击</button>
    <div></div>
    <script>
        var btn = document.querySelector('button');
        var div = document.querySelector('div');
        // 点击跳转页面
        btn.addEventListener('click', function () {
            location.href = 'http://www.baidu.com'
        });

        // 倒计时跳转
        var time = 5;
        var timeer = setInterval(function () {
            if (time == 0) {
                clearInterval(timeer);
                location.href = 'http://www.baidu.com'
            } else {
                div.innerHTML = time + '秒后跳转页面';
                time--;
            }


        }, 1000)


    </script>
</body>

</html>
案例-跳转页面

常见方法:

<button>点击</button>
<script>
    var btn = document.querySelector('button');
    btn.addEventListener('click', function () {
        // location.assign('http://www.baidu.com')  // 记录浏览历史,所以可以实现后退功能
        // location.replace('http://www.baidu.com')  // 不记录浏览历史,不能后退
        location.reload(true);  // 刷新页面
    })

</script>
示例代码


相关资料: https://github.com/1515806183/html-code/tree/master/wapapi-02

posted @ 2020-03-16 17:56  小白森  阅读(131)  评论(0编辑  收藏  举报