• JS(三)


    一、BOM操作

      1、简述:Browser Object Model,即用JS代码控制浏览器的相关操作。

      2、window对象(窗口对象)的操作:

    window.innerHeight;  // 查看当前窗口高度
    // ===> 850
    window.innerWidth;  // 查看当前窗口宽度
    // ===> 1440
    window.open('https://www.baidu.com/','','height=400px,width=400px,top=400px,left=400px');
    // 新建窗口打开一个页面,第一参数是url,第二个参数写空,第三个参数设置新建窗口的大小和位置
    // 新建的窗口是当前窗口的子窗口,父子窗口之间可以通过window.opener()通信
    window.close();  // 关闭当前窗口

      3、window子对象的操作:调用时可以不写前缀window,为了意义明确,推荐写全。

      4、window.navigator对象(浏览器对象)的操作:

    window.navigator.appName;  // 查看当前浏览器名称
    // ===> "Netscape"
    window.navigator.appVersion;  // 查看当前浏览器版本
    // ===> "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36"
    window.navigator.userAgent;  // 标识当前是否是浏览器访问,一般用于反爬虫
    // ===> "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36"
    window.navigator.platform;  // 查看当前所处平台
    // ===> "Win32"

      5、window.history对象(回访对象)的操作:

    window.history.back();  // 回退到上一页
    window.history.forward();  // 前进到下一页

      6、window.location对象(坐标对象)的操作:

    window.location.href;  // 获取当前页面的url
    // ===> "http://localhost:63342/week12-day01/03%20%E5%8D%9A%E5%AE%A2%E6%95%B4%E7%90%86/00.html?_ijt=4pa7c1ico8k5b7n99glgif7svc"
    window.location.href = 'http://www.baidu.com/';  // 跳转到指定页面
    window.location.reload();  // 刷新当前页面

      7、设置弹出框:

        ①警告框:有提示信息与确认按钮。

        <script>
            alert('欢迎来到本页面')
        </script>

        ②确认框:有提示信息与确认/取消按钮。

        <script>
            confirm('是否确认如此操作?')
        </script>

        ③互动框:有提示信息与可输入框还有确认/取消按钮。

        <script>
            prompt('请输入您的编号:')
        </script>

        <script>
            prompt('请输入您的编号:', '可以设置默认值')
        </script>

      8、设置计时器:

        <script>
            function welcome() {
                alert('欢迎来到本页面')
            }
            function show() {
                alert('本条每隔6秒播放一次')
            }
            function welcome_and_show_then_clear() {
                setTimeout(welcome, 500)  // 打开页面后0.5秒后弹出欢迎框
                let t = setInterval(show, 6000)  // 打开页面后每隔6秒弹出广告框
                function clear_timer() {
                    clearInterval(t)  // 函数内绑定清除定时器对象的方法
                }
                setInterval(clear_timer, 18001)  // 打开页面后18秒执行清除
            }
            welcome_and_show_then_clear()
        </script>

    二、DOM操作:Document Object Model,以关键字document起始。

      1、DOM树:在DOM树的概念中,所有标签都视为节点。

      2、DOM标准规定HTML文档中的每个成分都是一个节点(node):

    文档节点(document对象):代表整个文档
    元素节点(element 对象):代表一个元素(标签)
    文本节点(text对象):代表元素(标签)中的文本
    属性节点(attribute对象):代表一个属性,元素(标签)才有属性
    注释是注释节点(comment对象) 

      3、JavaScript 可以通过DOM创建动态的 HTML:

    JavaScript 能够改变页面中的所有 HTML 元素
    JavaScript 能够改变页面中的所有 HTML 属性
    JavaScript 能够改变页面中的所有 CSS 样式
    JavaScript 能够对页面中的所有事件做出反应

      4、DOM的操作流程:先查找标签,再用DOM操作标签。

      5、直接查找:

        <div id="d1" class="c1">div1</div>
        <div class="c1">div2</div>
        <div>div3</div>
    document.getElementById('d1');  // 通过id查找
    // ===> <div id=​"d1" class=​"c1">​div1​</div>​  // 得到指定id的唯一标签对象
    document.getElementsByClassName('c1');  // 通过class名查找
    // ===> HTMLCollection(2) [div#d1.c1, div.c1, d1: div#d1.c1]  // 得到继承了该class的所有标签组成的数组
    document.getElementsByTagName('div');  // 通过标签查找
    // ===> HTMLCollection(3) [div#d1.c1, div.c1, div, d1: div#d1.c1]  // 得到所有该标签组成的数组
    let divEle = document.getElementsByTagName('div')[0];  // 取出某个标签对象赋值给一个名字
    divEle;
    // ===> <div id=​"d1" class=​"c1">​div1​</div>​

      6、间接查找:

    let divEle = document.getElementById('d1');
    divEle;
    // ===> <div id=​"d1">​…​</div>​
    divEle.parentElement;  // 查找父标签
    // ===> <body>​…​</body>​
    divEle.parentElement.parentElement;
    // ===> <html lang=​"en">​<head>​…​</head>​<body>​…​</body>​</html>​
    divEle.parentElement.parentElement.parentElement;
    // ===> null
    divEle.children;  // 查找所有儿子标签
    // ===> HTMLCollection(3) [p, p, p]
    divEle.firstElementChild;  // 查找第一个儿子标签
    // ===> <p>​儿子p1​</p>​
    divEle.lastElementChild;  // 查找最后一个儿子标签
    // ===> <p>​儿子p3​</p>​
    divEle.nextElementSibling;  // 查找同级紧靠的下一个标签
    // ===> <div>​紧靠div下方​</div>​
    divEle.previousElementSibling;  // 查找同级紧靠的上一个标签
    // ===> <div>​紧靠div上方​</div>​

      7、节点操作:

        <div id="d1">div
            <p>儿子</p>
        </div>
    let divEle = document.getElementById('d1');
    let imgEle = document.createElement('img');  // 新建img标签 
    imgEle.src = 'aaa.jpg'; // 内置属性可以用点的方式设置 
    divEle.appendChild(imgEle); // 把新建的标签添加到div内的尾部 
    // 关联拓展: 
    // removeChild()---移除指定的儿子标签 
    // replaceChild()---替换指定的儿子标签 
    let aEle = document.createElement('a'); // 新建a标签 
    aEle.setAttribute('xxx', '666');  // 自定义属性只能如此设置 
    aEle.setAttribute('href', 'http://www.baidu.com'); // 内置属性也可如此设置 
    // 关联拓展: 
    // getAttribute()---获取属性 
    // removeAttribute()---移除属性 
    aEle.innerText = '点击跳转百度'; 
    // 关系拓展: 
    // innerTex---所有内容都视为文本
    // innerHTML---会识别HTML语法,可以添加子标签,如,xxxEle.innerHTML = '<h1>aaaaaaaaa</h1>' let pEle = document.getElementsByTagName('p')[0]; divEle.insertBefore(aEle, pEle); // 把新建标签添加到规定的位置

       8、获取值操作:

        <input type="text" id="d1">
        <input type="file" id="d2">

    let inputEle = document.getElementById('d1');
    let fileEle = document.getElementById('d2');
    inputEle.value;  // 获取值
    // === > "abcdefg"
    fileEle.value;  // 获取文件url
    // === > "C:fakepathaaa.jpg"
    fileEle.files[0];  // 获取文件数据
    // === > File {name: "aaa.jpg", lastModified: 1589830183250, lastModifiedDate: Tue May 19 2020 03:29:43 GMT+0800 (中国标准时间), webkitRelativePath: "", size: 21592, …}

      9、class操作:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>博客测试</title>
        <style>
            .c1 {
                width: 100px;
                height: 100px;
                background: cyan;
                display: inline-block;
                margin: 30px;
            }
            .c2 {
                border: 5px red solid;
            }
            .c3 {
                border-radius: 50%;
            }
        </style>
    </head>
    <body>
        <div id="d1" class="c1 c2"></div>
        <div id="d2" class="c1 c2"></div>
        <div id="d3" class="c1 c2"></div>
    </body>
    </html>
    let div1Ele = document.getElementById('d1');
    let div2Ele = document.getElementById('d2');
    let div3Ele = document.getElementById('d3');
    div1Ele.classList;  // 查看标签所有继承的class
    // ===> DOMTokenList(2) ["c1", "c2", value: "c1 c2"]
    div1Ele.classList.add('c3');  // 添加继承class
    div2Ele.classList.remove('c2');  // 移除继承class
    div3Ele.classList.toggle('c2');  // 已继承的class则移除
    div3Ele.classList.toggle('c3');  // 未继承的class则添加
    div3Ele.classList.contains('c2');  // 查看是否继承了某class
    false
    div3Ele.classList.contains('c3');
    true

      10、CSS操作:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>博客测试</title>
        <style>
            #d1 {
                width: 100px;
                height: 100px;
                background: cyan;
                margin: 50px;
            }
        </style>
    </head>
    <body>
        <div id="d1" class="c1 c2"></div>
    </body>
    </html>
    let divEle = document.getElementById('d1');
    divEle.style.border = '5px solid orange';
    divEle.style.webkitBorderRadius = '50%';
    "50%"

    三、事件

      1、简述:达到某个事先设定的条件,自动触发一系列动作。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>博客测试</title>
    </head>
    <body>
    <input type="button" onclick="func1()" value="点击跳转百度">
    <input type="button" id="d1" value="点击跳转百度" >
    <script>
        function func1() {
            window.location.href = 'http://www.baidu.com/'
        }
        let buttonEle = document.getElementById('d1')
        buttonEle.onclick = function () {
            window.location.href = 'http://www.baidu.com/'
        }
    </script>
    </body>
    </html>

  • 相关阅读:
    CF1290E Cartesian Tree
    【LeetCode】11. 盛最多水的容器
    【LeetCode】10. 正则表达式匹配
    【LeetCode】9. 回文数
    【LeetCode】8. 字符串转换整数 (atoi)
    【LeetCode】7. 整数反转
    【LeetCode】6. Z 字形变换
    【LeetCode】5. 最长回文子串
    【LeetCode】4. 寻找两个正序数组的中位数[待补充]
    【LeetCode】3. 无重复字符的最长子串
  • 原文地址:https://www.cnblogs.com/caoyu080202201/p/12914245.html
Copyright © 2020-2023  润新知