Dom樹結構和dom操作


Dom樹結構和dom操作

DOM 結構樹

DOM 結構樹(繼承關系)

  • Node -- 原型為 EventTarget 原型為 Object 原型為 null

    • Document (文檔)

      • HTMLDocument document文檔

      • XmlDoucment xml文檔

    • CharacterData

      • Text --> 文本

      • Comment -->注釋

    • Element(文檔中的元素)

      • HTMLElement --> 元素超集

        • HTMLHeaderElement

        • HTMLBodyElement

        • HTMLTitleElement

        • HTMLParagraphElement -->

        • HTMLInputElement

        • HTMLHDivElement

        • ........

    • Attr

節點(所有元素的超集接口)的四個屬性

  • nodeName: 節點名稱 只讀

  • nodeValue : 節點的內容可讀可寫 只有注釋節點和文本節點有,其他為null

  • nodeType : 節點類型 只讀

    • 元素節點 - 1 就是dom元素 例如:div、span、p等

    • 屬性節點 - 2 dom.attributes 該元素的屬性節點集合 dom.attributes[0].name dom.attributes[0].value 可改變其值,不能改變名字

    • 文本節點 - 3 包括空格回車等

    • 注釋節點 - 8

    • document - 9 一個 Document 節點。

    • 文檔類型節點 -10 描述文檔類型的 DocumentType 節點。例如 就是用於 HTML5 的。

    • documentFragment - 11 一個 DocumentFragment 節點

    • 還有一些已經棄用的

遍歷節點樹 (都為屬性) 兼容性好 但是會選出來文本或者注釋

  • parentNode --> 父節點 只有一個 最頂級的節點為 document

  • childNode --> 所有的兒子節點

  • firstChild --> 第一個節點

  • lastChild --> 最后一個子節點

  • nextSibling --> 緊接着的后一個兄弟節點

  • previousSilbing --> 緊接着的前一個兄弟節點

遍歷元素節點樹 (都為屬性) 不兼容都為IE9及以下不兼容

  • parentElement --> 父元素節點 只有一個 最頂級的節點為 null不是document (IE不兼容)

  • children --> 所有的兒子元素節點

  • firstElementChild --> 第一個元素子節點(IE不兼容)

  • lastElementChild --> 最后一個元素子節點 (IE不兼容)

  • nextElementSibling --> 緊接着的后一個兄弟元素節點 (IE不兼容)

  • previousElementSilbing --> 緊接着的前一個兄弟元素節點 (IE不兼容)

查找元素

  • getElementById() 定義在Document.prototype 上,即Element節點不能訪問

  • getElementsByName() 定義在HTMLDocument.prototype上,即非html元素不能使用(例:xml,element)

  • getElementsByTagName() 定義在Document.prototype上,和Element.prototype 兼容性最好

  • HTMLDocument.prototype上定義了常用屬性(例如:body,head)分別指向文檔中的和標簽

  • Document.prototype定義了documentElement屬性,指代文檔根元素即 標簽

  • getElementsByClassName 、querySelectorALl 、querySelector 在Document.prototype 和 Element.prototype 中都有定義。

增加元素 (document 對象的方法)

  • document.createElement();

  • document.createTextNode();

  • document.createComment();

  • document.createDocumentFragment();創建一個文檔片段,當追加到文檔中時,此元素會消失,不顯示出來

插入元素

  • parentNode.appendChild(); (Node 對象的方法) 向父元素中加入一個子元素,只能為(Node)不能是(DOMString)只能傳入一個參數 可以將已有的元素剪切到,另一個地方

  • parentNode.append(); (Element 對象的方法) 是實驗中的方法有兼容性問題,可以接收(DOMString、Node類型)參數可以為多個

  • parentNode.insertBefore(a,b); 在parentNode元素中的 b元素之前插入a元素;且b必須已經在dom結構中;插入a在b之前

刪除元素

  • parent.removeChild(son); (Node 對象的方法) 返回被刪除的對象

  • dom.remove(); (Element 對象的方法) 沒有返回值

替換 (Node 對象的方法)

  • parent.replaceChild(new ,old); 會將舊元素返回

Element

常用屬性

  • innerHTML 復制會覆蓋其他元素

  • innerText 賦值會覆蓋其他元素(老火狐不兼容)常用

  • textContent 和 innerText相同 (老IE不兼容 IE9 下)

常用方法

  • setAttribute();

  • getAttribute();

  • getBoundingClientRect() 返回一個對象屬性如下:但IE沒有width 和 height (可以通過兩個相減見得到) 兼容性很好 ** 但是不常用 **

    • left | top : 左上角坐標

    • bottom | right : 右下角坐標

    • windth | height 該元素寬高

    • x | y 貌似就是左上角一樣

    ~ 返回得結構為靜態快照並不會隨之改變,其坐標相對於視口

  • offsetWidth | offsetHeight ** 常用 ** 視覺上得尺寸

  • offsetLeft | offsetTop 求出相對於定位父元素的位置,如果沒有就是body元素

  • offsetParent 返回最近有定位的父元素沒有則為null


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM