3 回答

TA貢獻1796條經驗 獲得超10個贊
.children是元素的屬性。只有Elements有子節點,這些子節點都是Element類型。
但是Node.childNodes的屬性。可以包含任何節點。.childNodes
所以一個具體的例子就是
var el = document.createElement("div");
el.textContent = "foo"
el.childNodes.length === 1; // TextNode is a node child
el.children.length === 0; // no Element children
當然.children是DOM4所以瀏覽器支持是不穩定的,但是如果你使用DOM-shim,你的跨瀏覽器問題就會消失!
大多數時候你想使用,.children因為通常你不想在DOM操作中循環遍歷TextNodes或Comments。
如果您確實想要操作TextNodes,則可能需要.textContent。

TA貢獻1836條經驗 獲得超4個贊
Element.children
僅返回元素子元素,同時Node.childNodes
返回所有節點子元素。請注意,元素是節點,因此兩者都可以在元素上使用。
我相信childNodes
更可靠。例如,MDC(上面鏈接)指出,IE僅children
在IE 9中正確使用。瀏覽 childNodes
器實現者提供的錯誤空間較小。

TA貢獻1866條經驗 獲得超5個贊
到目前為止,答案很好,我只想補充一點,你可以使用以下方法檢查節點的類型nodeType:
yourElement.nodeType
這會給你一個整數:(取自這里)
| Value | Constant | Description | |
|-------|----------------------------------|---------------------------------------------------------------|--|
| 1 | Node.ELEMENT_NODE | An Element node such as <p> or <div>. | |
| 2 | Node.ATTRIBUTE_NODE | An Attribute of an Element. The element attributes | |
| | | are no longer implementing the Node interface in | |
| | | DOM4 specification. | |
| 3 | Node.TEXT_NODE | The actual Text of Element or Attr. | |
| 4 | Node.CDATA_SECTION_NODE | A CDATASection. | |
| 5 | Node.ENTITY_REFERENCE_NODE | An XML Entity Reference node. Removed in DOM4 specification. | |
| 6 | Node.ENTITY_NODE | An XML <!ENTITY ...> node. Removed in DOM4 specification. | |
| 7 | Node.PROCESSING_INSTRUCTION_NODE | A ProcessingInstruction of an XML document | |
| | | such as <?xml-stylesheet ... ?> declaration. | |
| 8 | Node.COMMENT_NODE | A Comment node. | |
| 9 | Node.DOCUMENT_NODE | A Document node. | |
| 10 | Node.DOCUMENT_TYPE_NODE | A DocumentType node e.g. <!DOCTYPE html> for HTML5 documents. | |
| 11 | Node.DOCUMENT_FRAGMENT_NODE | A DocumentFragment node. | |
| 12 | Node.NOTATION_NODE | An XML <!NOTATION ...> node. Removed in DOM4 specification. | |
請注意,根據Mozilla:
以下常量已被棄用,不應再使用:Node.ATTRIBUTE_NODE,Node.ENTITY_REFERENCE_NODE,Node.ENTITY_NODE,Node.NOTATION_NODE
添加回答
舉報