文件物件模型DOM
在DOM中,HTML文檔各個節點被視為各種類型的Node對象
每個Node對象都有自己的屬性和方法,利用這些屬性和方法可以遍曆整個文檔樹
由於HTML文檔的複雜性,DOM定義了nodeType來表示節點的類型
這裡列出Node常用的幾種節點類型
| 介面 |
nodeType常量 |
nodeType值 |
備忘 |
| Element |
Node.ELEMENT_NODE |
1 |
元素節點 |
| Attr |
Node.ATTRIBUTE_NODE |
2 |
節點屬性 |
| Text |
Node.TEXT_NODE |
3 |
文本節點 |
| Comment |
Node.COMMENT_NODE |
8 |
注釋的文本 |
| Document |
Node.DOCUMENT_NODE |
9 |
document |
| DocumentFragment |
Node.DOCUMENT_FRAGMENT_NODE |
11 |
document片段 |
DOM樹的根節點是一個Document對象,該對象的documentElement屬性可以擷取文檔根項目的Element對象。對於HTML文檔,這個就是<html>標記
JavaScript操作HTML文檔的時候,document即指向整個文檔,Element即為<body>、<table>等節點類型,Comment類型的節點則是指文檔的注釋
Document對象的大多數方法都是用於建立,可以插入文檔中的各種類型的節點
這裡列出了Document的常用方法
| 方法 |
描述 |
| createAttribute() |
用指定的名字建立新的Attr節點 |
| createComment() |
用指定的字串建立新的Comment節點 |
| createElement() |
用指定的標記名建立新的Element節點 |
| createTextNode() |
用指定的文本建立新的TextNode節點 |
| getElementById() |
返迴文檔中具有指定id屬性的Element節點 |
| getElementsByTagName() |
返迴文檔中具有指定標記名的所有Element節點 |
Attr對象代表文件項目的屬性,它有name、value等屬性,可以通過Node介面的attributes屬性或者調用Element介面的getAttributeNode()方法來擷取
不過,在大多數情況下,使用Element元素屬性的最簡單方法是調用getAttribute()和setAttribute()兩個方法,而不是Attr對象
這裡列出了Element的常用方法
| 方法 |
描述 |
| getAttribute() |
以字串形式返回指定屬性的值 |
| getAttributeNode() |
以Attr節點的形式返回指定屬性的值 |
| getElementsByTabName() |
返回一個Node數組,包含具有指定標記名的所有Element節點的子孫節點,其順序為在文檔中出現的順序 |
| hasAttribute() |
如果該元素具有指定名字的屬性,則返回true |
| removeAttribute() |
從元素中刪除指定的屬性 |
| removeAttributeNode() |
從元素的屬性列表中刪除指定的Attr節點 |
| setAttribute() |
把指定的屬性設定為指定的字串值,如果該屬性不存在則添加一個新屬性 |
| setAttributeNode() |
把指定的Attr節點添加到該元素的屬性列表中 |
Node對象定義了一系列屬性和方法,以方便遍曆整個文檔
這裡列出了Node對象的常用屬性
| 屬性 |
描述 |
| attributes |
如果該節點是一個Element,則以NamedNodeMap形式返回該元素的屬性 |
| childNodes |
以Node[]的形式存放當前節點的子節點。如果沒有子節點,則返回空數組 |
| firstChild |
以Node的形式返回當前節點的第一個子節點。如果沒有子節點,則為null |
| lastChild |
以Node的形式返回當前節點的最後一個子節點。如果沒有子節點,則為null |
| nextSibling |
以Node的形式返回當前節點的兄弟下一個節點。如果沒有這樣的節點,則返回null |
| nodeName |
節點的名字,Element節點則代表Element的標記名稱 |
| nodeType |
代表節點的類型。1為元素、2為屬性、3為文本.... |
| nodeValue |
擷取當前節點的值 |
| parentNode |
以Node的形式返回當前節點的父節點。如果沒有父節點,則為null |
| previousSibling |
以Node的形式返回緊挨當前節點、位於它之前的兄弟節點。如果沒有這樣的節點,則返回null |
這裡列出了Node對象的常用方法
| 方法 |
描述 |
| appendChild() |
通過把一個節點增加到當前節點的childNodes[]組,給文檔樹增加節點 |
| cloneNode() |
複製當前節點,或者複製當前節點以及它的所有子孫節點 |
| hasChildNodes() |
如果當前節點擁有子節點,則將返回true |
| insertBefore() |
給文檔樹插入一個節點,位置在當前節點的指定子節點之前。如果該節點已經存在,則刪除之再插入到它的位置 |
| removeChild() |
從文檔樹中刪除並返回指定的子節點 |
| replaceChild() |
從文檔樹中刪除並返回指定的子節點,用另一個節點替換它 |