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
添加回答
举报