DOM文檔對象模型

 

 DOM文檔對象模型  

一、DOM對象分爲: 

    a、Document對象;

    b、Element對象;

    c、Node對象;

二、DOM發展級別: 

    DOM有4個級別,分別爲:

    a、DOM 0 級:定義Document對象的一些屬性和方法;

    b、DOM 1 級;

    c、DOM 2 級;

    d、DOM 3 級;

    注:第 0 級和第 3 級不是W3C的官方標準;

三、DOM組成: 

    a、Core DOM:也稱核心DOM編程,定義標準針對任何結構文檔的對象;

    b、XML DOM:定義一套標準的針對 XML 文檔的對象;

    c、HTML DOM:定義一套標準的針對 XML 文檔的對象;

四、DOM節點: 

    a、文檔節點:至關於document對象;

    b、元素節點:HTML標籤;

    c、文本節點:文本內容;

    d、屬性節點:標籤屬性;

    注意:代碼註釋也是一種註釋節點,但通常狀況不作考慮。

 五、判斷節點類型: 

    a、文檔節點-----nodeType值爲「9」;

    b、元素節點-----nodeType值爲「1」;

    c、屬性節點-----nodeType值爲「2」;

    d、文本節點-----nodeType值爲「3」;



 1、Document對象: 

    一、DOM 查詢 (獲取元素節點)

        A、經過標籤的 id 屬性值獲取:

            語法:let num = document.getElementById(id屬性);

            輸出:console.log(num);

        B、經過標籤的 class 屬性值獲取:

            語法:let num = document.getElementsByClassName(class屬性);

            輸出:console.log(num[xx]);

                 class獲取的元素結果是一個數組形式,因此具體到某一位須要經過數組的下標[xx]去獲取。

        C、經過標籤名獲取:

            語法:let num = document.getElementByTagName(標籤名);

            輸出:console.log(num[xx]); 

                 標籤名獲取的元素結果是一個數組形式,因此具體到某一位須要經過數組的下標[xx]去獲取。

        D、經過標籤的 name 屬性值獲取:

            語法:let num = document.getElementsByName(name屬性值);

            輸出:console.log(num[0]);

                 name屬性值獲取的元素結果是一個數組形式,因此具體到某一位須要經過數組的下標[xx]去獲取。

        E、經過 CSS 選擇器方式獲取:

            返回第一個選擇器匹配的 HTML 頁面元素;

            語法:let num = document.querySelector(選擇屬性);

            輸出:console.log(num);

        F、經過 CSS 選擇器方式獲取:

            返回所有選擇器匹配的 HTML 頁面元素;

            語法:let num = document.querSelectorAll(選擇屬性);

            輸出:console.log(num);

    二、DOM查詢方法大體可分爲如下兩類:

        a、傳統型:

            getElementById-------------ID屬性;

            getElementsByClassName-----class屬性;

            getElementByTagName--------標籤名;

            getElementsByName----------name屬性;

        b、HTML5新增:

            querySelector------------- CSS 選擇器;

            querSelectorAll----------- CSS 選擇器;

    三、建立節點:

        a、建立元素節點:

            I、經過 document 對象建立一個新的元素節點 (標籤);

              語法:document.createElement(標籤名);

        b、建立文本節點:

            II、經過 document 對象建立一個新的文本節點(文本內容);

               語法:document.createTextNode(文本內容);

        c、建立屬性節點:

            III、經過 document 對象建立一個新的屬性節點;

                語法:document.createAttribute(屬性名);



 2、Node對象 

    一、遍歷節點:

        a、獲取父節點:(parentNode)

            經過 HTML 頁面的指定標籤查找其父節點。

            語法:子節點.parentNode

            例:

                <div id="father">

                    <div id="son"></div>

                </div>



                let num = document.getElementById("son");

                let sum = num.parentNode;

                console.log(sum);



        b、獲取子節點:(firstChild)

            經過 HTML 頁面的指定標籤查找其子節點。

            語法:父節點.firstChild

            注意:獲取指定標籤的第一子節點;

            例:

                <div id="father">

                    <div id="son1"></div>

                    <div id="son2"></div>

                    <div id="son3"></div>

                </div>



                var num = document.getElementById("father");

                var sum = num.firstChild;

                console.log( sum );



            語法:父節點.lastChild;

            注意:獲取指定標籤的最後一個子節點;

            例:

               <div id="father">

                    <div id="son1"></div>

                    <div id="son2"></div>

                    <div id="son3"></div>

                </div>



                var num = document.getElementById("father");

                var sum = num.lastChild;

                console.log( sum );



            語法:父節點.childNodes;

            注意:獲取指定標籤的全部子節點;

            例:

               <div id="father">

                    <div id="son1"></div>

                    <div id="son2"></div>

                    <div id="son3"></div>

                </div>



                var num = document.getElementById("father");

                var sum = num.childNodes;

                console.log( sum );



        c、獲取兄弟節點:

            經過 HTML 頁面的指定標籤查找兄弟節點:

            語法:兄弟節點.previousSibling;

            注意:previousSibling----獲取指定節點的前一個兄弟節點。

            例:

                <div id="brother1"></div>

                <div id="brother2"></div>

                <div id="brother3"></div>

 

                var num = document.getElementById("brother2");

                var sum = num.previousSibling;

                console.log( sum ); 

                console.log( sum.previousSibling );



            注意:nextSibling----獲取指定節點的最後一個兄弟節點。

            例:

                <div id="brother1"></div>

                <div id="brother2"></div>

                <div id="brother3"></div>

 

                var num = document.getElementById("brother2");

                var sum = num.nextSibling;

                console.log( sum ); 

                console.log( sum.nextSibling );



        d、插入節點:

            I、appendChild():將一個節點做爲最後一個子元素添加到指定父節點。

              語法:父節點.appendChild(子節點);

              例:

                let num = document.createElement("div");

                document.body.appendChild( num );

            II、insertBefore() :在父節點的某個已有的子節點以前再插⼊入一個子節點。

              語法:父節點.insertBefore(新子節點,舊子節點);

              例:

                let num = document.createElement("div");  // 建立 div

                document.body.appendChild( num );         // 將其插⼊入到 body 的末尾

                let sum = document.createElement("a");      // 建立 a

                document.body.insertBefore( sum, num ); // 將其插⼊入到 div 以前

            

            

        e、刪除節點:

                removeChild()

                語法:父節點.removeChild(子節點);

                例:

                    <div id="father">

                        <div id="son"></div>

                    </div>

                    

                    var father = document.getElementById("father"); // 獲取⽗父節點

                    var son = document.getElementById("son"); // 獲取⼦子節點

                    father.removeChild( son );                  // 刪除子節點

                    

        f、替換節點:

                 replaceChild();

                 語法:父節點.replaceChild(新子節點,舊子節點);

                 例:

                    <div id="father">

                        <div id="son"></div>

                    </div>



                    var father = document.getElementById("father"); // 獲取⽗父節點

                    var son = document.getElementById("son"); // 獲取已有⼦子節點

                    var newChild = document.createElement("p"); // 建立新節點

                    father.replaceChild( newChild, son ); // 新節點替換已有舊⼦子節點



        g、複製節點:

                 cloneNode();

                 語法:選中節點.cloneNode(布爾值true/false);

                 注意:若是爲true則該節點後面全部子節點也會被複制;若是爲false則只複製該節點自己。

                 例:

                    <div id="father">

                        <div id="son"></div>

                    </div>

                    

                    var father = document.getElementById("father"); // 獲取節點

                    var newFather = father.cloneNode( true ); // 複製已獲取節點

                    document.body.appendChild( newFather ); // 將複製好的新節點添加到 body 

3、Element對象 

    一、Element與Node

      A、經過節點訪問或操做HTML頁面內容:

            元素節點:表示HTML頁面中的標籤。

            屬性節點:表示HTML頁面中的屬性。

            文本節點:表示HTML頁面中標籤的文本內容。



      B、經過元素訪問或操做HTML頁面內容:

            元素:表示HTML頁面中的標籤。

 I、遍歷元素 

    一、獲取父元素:

        parentElement;

        語法:子元素.parentElement

        例、

           <div id="father">

               <div id="son"></div>

           </div>

            

            let sonEle = document.getElementById("son");

            let fatherEle = son.parentElement;

            console.log( fatherEle );

        注意:

            「Node 對象」的 parentNode 和「Element 對象」的 parentElement 兩個⽅方法均可以⽤用來獲取⽗級,可是有區別:

            parentNode 表示獲取指定元素的⽗節點。這個⽗節點多是元素節點,也多是⽂文檔節點。

            parentElement 表示獲取指定元素的⽗元素節點。該元素沒有⽗節點,或者它的⽗父節點不是⼀個元素節點,則返回 null 。

    二、獲取子元素:

        // 獲取子元素的第一個元素

            let fatherEle = document.getElementById("father");

            let aa = fatherEle.firstElementChild;    /*獲取子元素的第一個元素*/

            let ab = fatherEle.lastElementChild;    /*獲取子元素的最後一個元素*/

            let ac = fatherEle.children;            /*獲取子元素中的全部元素*/

            console.log(aa);

            console.log(ab);

            console.log(ac);

     
      
    三、獲取兄弟元素:

        // 獲取兄弟元素

            let ad = document.getElementById("son2");

            let ae = ad.previousElementSibling;        /*獲取兄弟元素的前一個元素*/

            let af = ad.nextElementSibling;            /*獲取兄弟元素的後一個元素*/

            console.log(ae);

            console.log(af);
node

相關文章
相關標籤/搜索