什么是節點?
HTML文檔中,所有內容都是節點。
整個文檔,是一個文檔節點;每一個html元素,是一個元素節點;每一個html屬性,是屬性節點;每一個注釋,是注釋節點;html內的文本,是文本節點。
DOM將HTML文檔被視為樹結構,稱為節點樹。
節點樹中所有節點都可通過js訪問或者修改。
節點樹中節點擁有層級關系---父(parent)、子(child)、同胞(sibling),父擁有子,同胞擁有相同的父。
創建節點
document.creatElement('標簽名') 創建一個節點---標簽名不區分大小寫。
還有一種方法是復制已存在的節點,cloneNode(),括號里面填寫true或false。false時,只執行一個淺復制,也就是說只復制作用的標簽,他的子元素不復制。
clonNode(true)時,結果如下:
clonNode(false)時,結果如下:
插入節點
appendChild() 或者 insertBefore()
appendChild()在父元素上調用,把新元素插入到父元素中最后的位置。
insertBefore()在父元素上調用,接收兩個參數,參1:父元素中要添加的元素;參2:父元素中已存在的子元素。把要添加的元素放在哪個元素的前面。
需要注意的是,調用這兩個方法時,如果將已經存在的節點再次插入,那么原來位置的節點自動刪除,並在新的位置重新插入。
例:按照li標簽的內容,由大到小排列li。
代碼如下:
執行之后的結果如下:
數組arr中的li全部為原來的li,並不是新添加的li,所以appendChild()時,只是相當於重新排列了原來li的順序。
而新創建一個li標簽時,就會在已經存在的元素基礎上增加一個。
刪除節點
removeChild() --- 從文檔樹中刪除一個節點。 需要注意的是,該方法是在要刪除節點的父節點上調用,要刪除的節點作為該方法的參數。
結果如下:
replaceChild() --- 刪除一個子節點,並用一個新節點取而代之。參1:新節點;參2:需要替代的節點。
例:給p標簽添加一個父元素div
結果如下: