close

DOM節點類型包括: 元素節點(element nodes)、文字節點(text nodes)、註解節點(comment nodes)

Node.nodeType

判斷節點類型

常數名稱 說明
Node.ELEMENT_NODE 1 表示 HTML 元素 (Element) 節點,像是 <p><div>
Node.TEXT_NODE 3 表示文字 (Text) 或屬性 (Attr) 節點
Node.COMMENT_NODE 8 表示註解節點 (Comment)
Node.DOCUMENT_NODE 9 表示根節點 (Document)
Node.DOCUMENT_TYPE_NODE 10 表示 DocumentType 節點,像是 <!DOCTYPE html>
Node.DOCUMENT_FRAGMENT_NODE 11 表示 DocumentFragment 節點

使用範例:

// true
document.nodeType === Node.DOCUMENT_NODE;

// true
document.doctype.nodeType === Node.DOCUMENT_TYPE_NODE;

var p = document.createElement('p');
p.textContent = 'Once upon a time...';

// true
p.nodeType === Node.ELEMENT_NODE;
// true
p.firstChild.nodeType === Node.TEXT_NODE;

Node.nodeName

nodeName 屬性會返回節點的名稱。

節點類型 nodeName 的值
Attr 值同 Attr.name
Comment "#comment"
Document "#document"
DocumentFragment "#document-fragment"
DocumentType 值同 DocumentType.name,例如 "html"
Element 值同 Element.tagName
Text "#text"

使用範例:

<div id="d1">hello world</div>
<input id="t" type="text">

<script>
var div = document.getElementById('d1');
var text = document.getElementById('t');

// 顯示 "DIV"
alert(div.nodeName);

// 顯示 "INPUT"
alert(text.nodeName);
</script>

Node.childNodes

所有的 DOM 節點物件都有 childNodes 屬性,且此種屬性無法修改。
我們可以透過 Node.hasChildNodes() 來檢查某個 DOM 節點是否有子節點。
Node.childNodes 回傳的可能會有:元素節點、文字節點、註解節點
使用範例:

var node = document.querySelector('#hello');

// 如果 node 內有子元素
if( node.hasChildNodes() ) {

// 可以透過 node.childNodes[n] (n 為數字索引) 取得對應的節點
// 注意,NodeList 物件內容為即時更新的集合
for (var i = 0; i < node.childNodes[i].length; i++) {
// ...
};
}

Node.firstChild

Node.firstChild 可以取得 Node 節點的第一個子節點,如果沒有子節點則回傳 null。
 

Node.lastChild

Node.lastChild 可以取得 Node 節點的最後一個子節點,如果沒有子節點則回傳 null。
 

Node.parentNode

透過 Node.parentNode 可以用來取得父節點
 

Node.previousSibling

取得同層之間的「前一個」節點,如果 node 已經是第一個節點,則回傳 null。
 

Node.nextSibling

取得同層之間的「下一個」節點,如果 node 已經是最後一個節點,則回傳 null。


參考資料:
fooishithelp

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 浣熊 的頭像
    浣熊

    前端生涯

    浣熊 發表在 痞客邦 留言(0) 人氣()