• JS 之DOM1


    一  DOM 概念:

    document object model 文档对象模型,浏览器把拿到的html代码,结构化成一个浏览器能识别并且js可操作的一个模型。

    特点: 1)页面都是字符串,JS把字符串转成DOM树。DOM树把字符串转成节点,浏览器就是操作节点的

               2) DOM赋予我们操作页面的能力

              3) DOM是创建,插入,修改,删除页面元素的标准。

    二  DOM 常用API

    1 attributes 属性节点   返回集合,每个属性都有一个自己对应的下标,有一个length属性,元素身上有多少个属性节点

    2 childNodes 元素身上的第一层子节点(集合)

    3 nodeName 节点名称

    4 nodeType 节点类型,返回的数字

      1   ----元素节点

       2 ---属性节点

       3 ----文本节点

       8 ---注释节点

       9  ----文档节点

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta >
        <title>Document</title>
        <style type="text/css">
        </style>
    </head>
    <body>
        
    <div id="box" class="div" style="300px">
        <p>
            <span>xubj</span>
        </p>
        <!-- 这里是注释 -->
    </div>
    </body>
    </html>
    <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
    <script type="text/javascript">
    
     var box=document.getElementById("box");
     var attr=box.attributes;
     console.log(attr); // id class style
     console.log(attr.length); // 3
     var child=box.childNodes;
     console.log(child);//集合 text p text comment text
    
     //元素节点(标签)
     console.log(box.nodeName); // DIV
     console.log(box.nodeType); // 1
    
     //属性节点
     console.log(attr[0].nodeName); // id
     console.log(attr[0].nodeType); // 2
    
     //文本节点
     console.log(child[0].nodeName); // #text
     console.log(child[0].nodeType); // 3
     //注释节点
     console.log(child[3].nodeName); // #comment
     console.log(child[3].nodeType); // 8
     //文档节点
     console.log(document.nodeName); // #document
     console.log(document.nodeType);  // 9
    
    
    </script>

    5 tagName 标签名称 ,nodeName 任何一个节点都有这个属性,tagName 只有元素节点才有这个属性

    console.log(box.nodeName); //DIV
     console.log(box.tagName); //DIV
     console.log(document.nodeName);// #document
     console.log(document.tagName); // undeifined

    6 parentNode 元素的父节点

    var box=document.getElementById("box");
     var span=document.querySelectorAll("span")[0];
     console.log(span.parentNode); // p

    7 children 父.chidren,获取到父级的第一层子元素,有一个length属性【非标准】

      childNodes 获取元素的第一层所有子节点,包含文本,注释

    <ul>
                <li><span>隐藏1</span></li>
                <li><span>隐藏2</span></li>
                <li><span>隐藏3</span></li>
                <li><span>隐藏4</span></li>
                <li><span>隐藏5</span></li>
                <!--这里是注释-->
            </ul>
    
    
    <script>
     var ul=document.querySelector("ul");
     console.log(ul.children); //[li,li,li,li,li]
     function getChild(parent){
         var child=parent.childNodes;
         var arr=[];
         for(var i=0;i<child.length;i++){
             if(child[i].nodeType===1){
                 arr.push(child[i]);
             }
         }
         return arr;
     }
     var lis=getChild(ul);
     console.log(lis);//[li,li,li,li,li]
    </script>

    9   previousElementSibling 上一个兄弟节点,找不到返回null

    10 nextElementSibling 下一个兄弟节点,找不到返回NULL

    11 firstElementChild  找到第一个子节点

    12 lastElementChild 父级.lastElementChild 找到最后一个子节点 

    <ul>
                <li><span>隐藏1</span></li>
                <li><span>隐藏2</span></li>
                <li><span>隐藏3</span></li>
                <li><span>隐藏4</span></li>
                <li><span>隐藏5</span></li>
                <!--这里是注释-->
            </ul>
    
    <script type="text/javascript">
    var ul=document.querySelector("ul");
    var lis=document.querySelectorAll("li");
    lis[2].previousElementSibling.style.color="red"; //上一个兄弟元素
    lis[2].nextElementSibling.style.color="green";  // 下一个兄弟元素
    
    ul.firstElementChild.style.background="orange"; // 第一个子元素
    ul.lastElementChild.style.background="blue"; // 最后一个子元素
    </script>

     13 属性的操作方法

         1)    .属性名

         2)     [属性名]

         3) getAttribute(attr)  获取元素的属性

         4) setAttribute(attr,value) 设置属性 

         5)removeAttribute(attr) 删除属性

    <div id="box" data-v="xubj" class='div'>
        <img id='pic' src="images/1.jpg">
    </div>
    
    <script type="text/javascript">
    var box=document.getElementById("box");
    var pic=document.getElementById("pic");
    console.log(box.id);// box
    console.log(pic['src']);// 获取的是绝对路径 eg:http://www...
    console.log(box.getAttribute('class'));// div
    console.log(pic.getAttribute("src")); //images/1.jpg 相对路径
    box.setAttribute("class","xubj");
    console.log(box.getAttribute("class"));// xubj
  • 相关阅读:
    Centos7下rc.local文件开机不执行…
    Centos7添加密码安全策略
    Java8 时间日期类操作
    XML配置spring session jdbc实现session共享
    Spring Boot 2.x以后static下面的静态资源被拦截
    外观模式
    组合设计模式
    Java线程池源码解析
    观察者模式
    Java使用POI解析Excel表格
  • 原文地址:https://www.cnblogs.com/xubj/p/7991989.html
Copyright © 2020-2023  润新知