• day 46 前端基础之 BOM和 DOM


    主要内容:https://www.cnblogs.com/liwenzhou/p/8011504.html

    1 . Javascript 分为ECMAscript, DOM, BOM.

       BOM(Browser Object Model) 是指浏览器对象模型, 它使JavaScript又能努力与浏览器进行对话

       DOM(Document Object Model)是指文档对象模型, 通过它,可以访问html文档的所有元素.

       windows对象是客户端javascript最高层对象之一, 由于windows对象是其他大部分对象的共同祖先.windows对象的方法和属性, 可以省略windows对象的引用.

    2 . window的子对象

      navigator对象 : 浏览器对象, 通过这个对象可以判定用户所使用的浏览器,包含了浏览器相关信息.

      location对象: (重要) window.location 对象用于获得当前页面的地址,并把浏览器定向到新的页面

    常用属性和方法:

    location.href            //获取url
    "https://www.sogo.com/"
    location.href='url'      //跳转到指定页面
    location.reload()        // 重新加载页面
    

      history对象:  window.history对象包含浏览器的历史

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

      弹出框: 在javascript中创建三种消息框:警告框 确认框 提示框

        警告框: 经常用于确保用户可以得到某些信息.当警告框出现后,用户需要点击确定按钮才能进行操作.

    alert(123)
    

        确认框:  确认框用于使用户可以验证或者接受某些信息.

            当确认框出现后, 用户需要点击确定后者取消按钮才能进行继续操作.点确认返回ture,否则else

    confirm('que')
    true
    confirm('124')
    false
    

        提示框: 提示框常用提示用户在进入页面前输入某个值

    prompt('请在下方输入','答案')
    "答案"
    prompt('请在下方输入','答案')
    null
    

    3 . 计时相关

      a : 定义 : 通过使用javascript. 我们可以在一定时间间隔之后来执行代码, 而不是在函数调用后立即执行. 这称计时事件.

      b : setTimeout           语法 : var  t = setTimeout('js语句', 毫秒) 

    setTimeout(function jump(){alert(123)}, 3000)   # 第一种方式
    function kk(){
    	alert(123)
    }
    setTimeout(kk, 4000)                            # 第两种方式
    2
    

       clearTimeout()      语法 :  clearTimeout( setTimeout_variable)

    var timer = setTimeout(function(){
    	alert(123);}, 3000);// 取消settimeout设置
    clearTimeout(timer)
    

      c : setInterval()   语法 : var  t = setTimeout('js语句',  时间间隔)

    function an(){
    	console.log(123)
    }
    setInterval(an, 1000)
    1
    

        clearinterval()

    function an(){
    	console.log(123)
    }
    var t2 = setInterval(an, 1000)
    clearInterval(t2)
    

    4 . 查找标签

      1) 直接查找  

        1. document.getElementById("id值") --> 找到具体的标签对象
        2. document.getElementsByClassName("样式类名") --> 找到标签对象的数组
        3. document.getElementsByTagName("标签名") --> 找到标签对象的数组

    document.getElementById('i1')                        #根据id获取一个标签
    <div id=​"i1">​div​</div>​
    document.getElementsByClassName('c1')                #根据class属性获取
    
    var c1Ele = document.getElementsByClassName('c1')
    undefined
    c1Ele
    HTMLCollection(2) [p.c1, p.c1]
    c1Ele[0]
    <p class=​"c1">​p1​</p>​
    c1Ele[1]
    var c2e = document.getElementsByTagName('p')         #根据标签名获取标签合集
    undefined
    c2e[0]
    <p class=​"c1">​p1​</p>​
    c2e[0].innerText = 'biaoqian'                         # 修改文本内容
    "biaoqian"
    

      2 ) 间接查找

    var d2 = document.getElementById('d2')
    d2.children                                #所有子标签
    HTMLCollection(3) [p, div#d3, p, d3: div#d3]
    d2.firstElementChild                       #第一个子标签元素
    <p>​d3前面的p标签​</p>​
    d2.lastElementChild                        #最后一个子标签元素                
    <p>​d3后面的p标签​</p>​
    d3 = document.getElementById('d3')
    <div id=​"d3">​div2​</div>​
    d3.previousElementSibling                  #上一个兄弟标签
    <p>​d3前面的p标签​</p>​
    d3.nextElementSibling                      #下一个兄弟标签
    <p>​d3后面的p标签​</p>​
    parentElement 父节点标签元素

    innertext innerHTML的区别

    d2.innerText
    "d3前面的p标签
    
    div2
    d3后面的p标签"
    d2.innerHTML
    "
            <p>d3前面的p标签</p>
            <div id="d3">div2</div>
            <p>d3后面的p标签</p>
        "
    

    5 . 节点操作

      1 ) 创建节点和添加节点

      追加一个子节点(作为最后的子节点) : somenode.appendchild(newnode)

    var pele = document.createElement('span') #创建一个节点
    undefined
    pele.innerText = '最美的太阳'
    "最美的太阳"
    d2.appendChild(pele)                       #追加一个子节点
    <span>​最美的太阳​</span>​
    

      把增加的节点放到某一个节点的前边: somenode.insertbefore(newnode, 某个节点)

    var div1 = document.createElement('div')
    undefined
    div1.innerText = '张杰'
    "张杰"
    
    d2.insertBefore(div1, d3)
    <div>​张杰​</div>​
    

      实例二

    var img1 = document.createElement('img');
    undefined
    img1.setAttribute('src','http://g.hiphotos.baidu.com/baike/pic/item/314e251f95cad1c8f1589f12723e6709c93d5127.jpg');
    undefined
    var i2 = document.getElementById('i2');
    undefined
    d2.appendChild(img1)
    <img src=​"http:​/​/​g.hiphotos.baidu.com/​baike/​pic/​item/​314e251f95cad1c8f1589f12723e6709c93d5127.jpg">​
    

     2 ) 删除节点和替换节点

       删除节点的语法 : 获取要删除的元素, 通过父元素调用删除  removechild(要删除的节点)

       替换节点的语法 : somenode.replacechild(newnode, 某个节点)

    var d2 = document.getElementById('d2')
    undefined
    var d3 = document.getElementById('d3')
    undefined
    d2.removeChild(d3)
    <div id=​"d3">​div2​</div>​
    div2 = document.createElement('div')
    <div>​</div>​
    d2.replaceChild(div2, d2)
    

      文本节点: innertext不能识别标签都按照文本显示

            innerHTML能正常识别标签

    d2.innerText = '<p>呵呵</p>'
    "<p>呵呵</p>"            
    d2.innerHTML = '<p>呵呵</p>'
    "<p>呵呵</p>"                #在文本中显示'呵呵'
    

    6 . 获取值操作

      适用于以下标签:   input select  textarea

    var iEle = document.getElementById("i1");
    console.log(iEle.value);
    var sEle = document.getElementById("s1");
    console.log(sEle.value);
    var tEle = document.getElementById("t1");
    console.log(tEle.value);
    

    7 class 的操作

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

      例子:

    var d1ele = document.getElementById('d1')
    
    d1ele.className          获取所有样式类名
    "c c1"
    d1ele.classList
    DOMTokenList(2) ["c", "c1", value: "c c1"]0: "c"1: "c1"length: 2value: "c c1"__proto__: DOMTokenList
    d1ele.classList.remove('c1')  删除指定类
    undefined
    d1ele.classList.add           增加指定类
    ƒ add() { [native code] }
    d1ele.classList.add('c1')
    undefined
    d1ele.classList.contains('c1') 存在返回ture, 否则返回false
    true
    d1ele.classList.toggle('c1')   存在就删除, 否则添加
    false
    d1ele.classList.toggle('c1')
    true
    

    8 . 指定css操作

    d1ele
    <div id=​"d1" class=​"c c1">​</div>​
    d1ele.style.backgroundColor = 'deeppink'
    "deeppink"
    d1ele.style.borderRadius= '3px'
    "3px"
    

    9 . 事件机制

      1) 常用事件

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

      2 ) 例子

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta http-equiv="content-Type" charset="UTF-8">
        <meta http-equiv="x-ua-compatible" content="IE=edge">
        <title>Title</title>
        <style>
            .c {
                height: 200px;
                 200px;
                background-color: red;
                border-radius: 50%;
            }
            .c1 {
                background-color: green;
            }
        </style>
    
    </head>
    <body>
        <div id="d1" class="c c1"></div>
        <button  onclick="change()" id="b1">点我1</button>
        <input type="button" id="b2" value="点我2">
    <script>
        function change() {
            var d1Ele = document.getElementById("d1");
            d1Ele.classList.toggle("c1");
        }
    
        // 通过JS给标签绑定事件
        var b2Ele = document.getElementById("b2");
        b2Ele.onclick=function () {
            console.log(this);
            // this表示触发事件的标签本身
            var d1Ele = document.getElementById("d1");
            d1Ele.classList.toggle("c1");
        }
    </script>
    
    </body>
    </html>
    

      3 )  input框获取焦点和失去焦点事件

    <html lang="zh-CN">
    <head>
        <meta http-equiv="content-Type" charset="UTF-8">
        <meta http-equiv="x-ua-compatible" content="IE=edge">
        <title>Title</title>
    </head>
    <body>
    
    <input type="text" id="i1" value="对子哈特">
    <script>
        // 找到要绑定事件的标签
        var i1Ele = document.getElementById("i1");
        // 1. 先绑定获取焦点的事件
        i1Ele.onfocus = function (ev) {
            // 当输入框获取焦点之后要做的事儿
            this.value = "";
        };
        // 2. 绑定失去焦点的事件
        i1Ele.onblur = function (ev) {
            this.value = "对子哈特";
        }
    </script>
    </body>
    </html>
    

    10 select联动

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta http-equiv="content-Type" charset="UTF-8">
        <meta http-equiv="x-ua-compatible" content="IE=edge">
        <title>Title</title>
    </head>
    <body>
    <label for="s1"></label>
    <select name="" id="s1">
        <option value="01">省</option>
    </select>
    
    <label for="h1"></label>
    <select name="" id="h1">
        <option value="01">市</option>
    </select>
    
    
    <script>
        var data = {
            '北京':['昌平区','海定区','朝阳区'],
            '上海':['浦东新区','徐汇区']
        };
    
         var s1ele = document.getElementById('s1');
         var h1ele = document.getElementById('h1');
         //拿到所有的省, 在s1中生成对应的option选项
         for(var i in data){
             //创建option标签
             var opt = document.createElement('option');
             //把信息加入到标签中
             opt.innerText = i;
             //把创建好的标签加入第一个select标签中
             s1ele.appendChild(opt)
        }
        //拿到所有的市, 在h1中生成对应的option选项
        
        
        //当第一个select框的值发生变化是的时候触发的动作
        s1ele.onchange = function () {
             // 0 清空第二个select框里的内容
            s2ele.innerText = ''; 
            // 1. 先获取用户选中的省
            var p = this.value;
            var cityarray = data[p];
             for (var j in cityarray){
            //生成空的option
                 var opt1 = document.createElement('option');
            //往optin里添加内容
                 opt1.innerText = cityarray[j];
            //把生活才能的option追加到select标签中
                h1ele.appendChild(opt1);
        }
    
        }
    
    </script>
    </body>
    </html>
    

      

     

     

      

     

        

     

  • 相关阅读:
    3、MHC主要组织相容性复合体
    2、抗原
    1、免疫细胞
    【转】python3 内循环中遍历map,遍历一遍后再次进入内循环,map为空
    【转】Map 与 Unordered_map
    Chapter7 抑癌基因
    总结 搜索和最短路径问题
    1131 Subway Map DFS解法 BFS回溯!
    python 报错信息汇总
    python str转换成timedelta或date
  • 原文地址:https://www.cnblogs.com/gyh412724/p/9599136.html
Copyright © 2020-2023  润新知