zoukankan      html  css  js  c++  java
  • 前端基础之BMO和DOM

    一:基础概念

    BOM:指浏览器模型 使得JS能够与浏览器进行交流

    DOM:指文档对象模型 通过它可以访问HTML所有的文档元素 

    二:window窗口

    【1】基础简介

      (1)所有浏览器都支持 window 对象。它表示浏览器窗口。

      (2)*如果文档包含框架(frame 或 iframe 标签),浏览器会为 HTML 文档创建一个 window 对象,并为每个框架创建一个额外的 window 对象。

      (3)*没有应用于 window 对象的公开标准,不过所有浏览器都支持该对象。

      (4)所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。

      (5)全局变量是 window 对象的属性。全局函数是 window 对象的方法。

      (6)接下来要讲的HTML DOM 的 document 也是 window 对象的属性之一。

    【2】常用方法:

    (1)window.innerHeight - 浏览器窗口的内部高度

    (2)window.innerWidth - 浏览器窗口的内部宽度

    (3)window.open() - 打开新窗口

    (4)window.close() - 关闭当前窗口

    【3】window的子对象

    (1)navigator对象

    作用:了解浏览器相关的信息

    例如:

    navigator.appName  // Web浏览器全称
    navigator.appVersion  // Web浏览器厂商和版本的详细字符串
    navigator.userAgent  // 客户端绝大部分信息
    navigator.platform   // 浏览器运行所在的操作系统

    (2)history:

    作用:对网页进行简单的前进或者后退

    例如:

    history.forward()  // 前进一页
    history.back()  // 后退一页

    (3)location对象:

    作用:获取当前的url地址 或者进行url的重定向

    例如:

    location.href  获取URL
    location.href="URL" // 跳转到指定页面
    location.reload() 重新加载页面

    (4)弹出框

    作用:可以再JavaScript中创建消息框中创建警告 确认 提示

    (1)警告框:

    作用:当弹出警告框之后 用户需要点击确定才能继续操作

    例如:

     (2)确认框:

    作用:用户需要点击确认才能进行某个操作

    例如:

     (3)提示框:

    作用:用户需要输入一定的文本内容 点击确定才能继续操作

    例如:

    (4)计时相关:

    作用:通过JS使经过一段时间才会执行相应的代码

    setTimeout():

    语法结构:

    var t=setTimeout("JS语句",毫秒)

     clearTimeout()

    作用:清楚某个计时器

      function foo() {
            alert(123)
        }
    
        function show() {
            var t = setInterval(foo,3000);
            function inner(){
                clearInterval(t)
            }
            setTimeout(inner,9000)
        }
        show()
    使用示例

    setInterval():

    作用:有点类似于循环 可以周期性循环调用某个函数或者语句

    语法:

    setInterval("JS语句",时间间隔)

    clearInterval():

    作用:可以清除上述setinterval周期性调用某些函数或者语句

    语法:

    clearInterval(setinterval返回的ID值)

    例如:

    // 每隔一段时间就执行一次相应函数
    var timer = setInterval(function(){console.log(123);}, 3000)
    // 取消setInterval设置
    clearInterval(timer);

     

    三:DOM

    (1)作用:

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

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

    【2】查找标签:

    (1)直接查找:

    例如:

    document.getElementById           根据ID获取一个标签
    document.getElementsByClassName   根据class属性获取
    document.getElementsByTagName     根据标签名获取标签合集

     PS:

    (1)除了ID标签 其余获取的对象都是存入在数组中

    (2)间接查找:

    例如:

    parentElement            父节点标签元素
    children                 所有子标签
    firstElementChild        第一个子标签元素
    lastElementChild         最后一个子标签元素
    nextElementSibling       下一个兄弟标签元素
    previousElementSibling   上一个兄弟标签元素

    【3】节点操作:

    (1)创建节点:

    语法:

    var divEle = document.createElement("div");

    (2)添加节点:

      (1)appendChild:尾部追加一个子节点

      (2)insertBefore:增加的节点放在某个节点之前

    例如:

     var imgEle = document.createElement('img');
        var d1Ele = document.getElementById('d1');
        d1Ele.appendChild(imgEle)

    (3)删除节点:

    语法:

    omenode.removeChild(要删除的节点)

    (4)替换节点

    语法:

    somenode.replaceChild(newnode, 某个节点);

    【4】属性节点:

    (1)获取文本的属性:

    var divEle = document.getElementById("d1")
    divEle.innerText
    divEle.innerHTML

    PS:

    (1)使用innerText只能获取内部文本

    (2)使用innerHTML不但可以获取文本 还可以获取该内部所有的标签

    (2)设置文本节点的值

    例如:

    var divEle = document.getElementById("d1")
    divEle.innerText="1"
    divEle.innerHTML="<p>2</p>"

    PS:

    (1)如果使用innerText设置属性如果携带标签标签不会生效

    (2)如果使用innerHTML设置文本属性如果携带标签标签会生效

    (3)attribute操作

    作用:

    (1)为添加的属性赋值

    (2)自带的属性可以通过.的方式进行取值赋值

    例如:

    【4】class操作

    className  获取所有样式类名(字符串)
    classList.remove(cls)  删除指定类
    classList.add(cls)  添加类
    classList.contains(cls)  存在返回true,否则返回false
    classList.toggle(cls)  存在就删除,否则添加

     例如:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
    
            .c1 {
                height: 400px;
                 400px;
                border-radius: 50%;
            }
            .bg_red {
                background-color: red;
            }
            .bg_green {
                background-color: green;
            }
        </style>
    </head>
    <body>
    <div class="c1 bg_red bg_green">
    
    </div>
    </body>
    </html>
    开关灯

    【5】CSS操作:

    关键字:style

    例如:

    obj.style.backgroundColor="red"

    常用操作:

    obj.style.margin
    obj.style.width
    obj.style.left
    obj.style.position

    四:事件

    (1)作用:达到某个条件执行某段代码

    (2)常用事件

    onclick        当用户点击某个对象时调用的事件句柄。
    ondblclick     当用户双击某个对象时调用的事件句柄。
    
    onfocus        元素获得焦点。               // 练习:输入框
    onblur         元素失去焦点。               应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.
    onchange       域的内容被改变。             应用场景:通常用于表单元素,当元素内容被改变时触发.(select联动)
    
    onkeydown      某个键盘按键被按下。          应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.
    onkeypress     某个键盘按键被按下并松开。
    onkeyup        某个键盘按键被松开。
    onload         一张页面或一幅图像完成加载。
    onmousedown    鼠标按钮被按下。
    onmousemove    鼠标被移动。
    onmouseout     鼠标从某元素移开。
    onmouseover    鼠标移到某元素之上。
    
    onselect      在文本框中的文本被选中时发生。
    onsubmit      确认按钮被点击,使用的对象是form。

    (3)触发事件的两种方式

      (1)调用函数触发

      (2)JS代码触发

    例如:

    <!--调用函数-->
    <button onclick="func()">按钮1</button>
    
    <!--JS代码操作-->
    <button id="d1">按钮2</button>
    
    
    <script>
        function func(){
            alert(123)
    }
    
    //JS代码操作
    var bEle = document.getElementById('d1');
        bEle.onclick = function () {
            alert(456)
        }
    onclick点击事件
    <input type="text" value="mac笔记本" id="d1">
    
    
    <script>
        inputEle = document.getElementById('d1');
        //设置焦点
        inputEle.onfocus = function () {
            inputEle.value = null
        };
        
        //失去焦点
        inputEle.onblur = function () {
            inputEle.value = '你好啊 欢迎下次再来!'
        }
    
    
    </script>
    焦点/失去焦点事件
    <input type="text" id="d1">
    <button id="d2">开始</button>
    <button id="d3">结束</button>
    
    
    <script>
    
        time = null;
        var inputEle = document.getElementById('d1');
        var b1Eel = document.getElementById('d2');
        var b2Ele = document.getElementById('d3');
        function showTime() {
    
            // 获取时间对象
            current_time = new Date();
    
            // 获取当前时间
            inputEle.value = current_time.toLocaleString()
        }
    
    
    
    
        b1Eel.onclick = function () {
    
            // 做条件判断主要是防止开启多个计时器 但是只能关闭一个
            if (! time){
                 //判断上述变量是否为空 如果为空 则走代码块
                 time = setInterval(showTime,1000)
            }
    
    
        };
    
        b2Ele.onclick = function () {
            clearInterval(time);
    
            // 当关闭的时候 将上述变量设置为空
            time = null
        }
    
    
    
    </script>
    计时器案例
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
    <select name="" id="d1">
        <option value="">---请选择---</option>
    </select>
    <select name="" id="d2">
        <option value="">---请选择---</option>
    </select>
    
    
    <script>
        var data = {
            "河北省": ["廊坊", "邯郸"],
            "北京": ["朝阳区", "海淀区"],
            "山东": ["威海市", "烟台市"],
            "上海": ["静安区", "黄浦区"],
            "深圳": ["南山区", "龙岗区"]
        };
        var seEle = document.getElementById('d1');
        var se2Ele = document.getElementById('d2');
        // 循环打印上述数据
        for (var i in data) {
            // 给上述select创建标签
            var optEle = document.createElement('option');
            // 将循环打印的城市名称存放进入元素中
            optEle.innerText = i;
    
            // 给选项赋值
            optEle.value = i;
            // 将创建好的标签加入上述选项中
            seEle.appendChild(optEle);
        }
        // change改变事件
    
        seEle.onchange = function () {
            // 获取省
            var currentPro = seEle.value;
            // 获取市
            var currentCityList = data[currentPro];
            // 设置每次循环打印之前将内部内容为空 防止与上次代码选择重合
            se2Ele.innerHTML = '';
            var opt1Ele = document.createElement('option');
            opt1Ele.innerText = '---请选择---';
            se2Ele.appendChild(opt1Ele);
    
            //     循环打印市
            for (let i = 0; i < currentCityList.length; i++) {
                var city = currentCityList[i];
                var optEle = document.createElement('option');
                // 添加的属性加入文本
                optEle.innerText = city;
                optEle.value = city;
                se2Ele.appendChild(optEle);
            }
    
    
        };
    </script>
    
    
    </body>
    </html>
    省市联动
  • 相关阅读:
    【Python】列表推导式
    【产品吐槽】阿里云堡垒机,没有那么优秀
    python之路第五天
    python之路第四天
    python之路第三天
    python之路第二天
    python之路第一天
    Flink中Periodic水印和Punctuated水印实现原理(源码分析)
    Flink的Job启动JobManager端(源码分析)
    Flink的Job启动Driver端(源码分析)
  • 原文地址:https://www.cnblogs.com/SR-Program/p/11493513.html
Copyright © 2011-2022 走看看