Joh*_*ohn 279 javascript dom
我发现自己使用JavaScript和我对面跑去childNodes和children性能.我想知道它们之间的区别是什么.另一个是另一个优先选择?
Ray*_*nos 300
.children是元素的属性.只有Elements有子节点,这些子节点都是Element类型.
但是Node.children的属性.可以包含任何节点..childNodes
所以一个具体的例子就是
let el = document.createElement("div");
el.textContent = "foo";
el.childNodes.length === 1; // Contains a Text node child.
el.children.length === 0; // No Element children.
Run Code Online (Sandbox Code Playgroud)
当然.childNodes是DOM4所以浏览器支持是不稳定的,但是如果你使用DOM-shim,你的跨浏览器问题就会消失!
大多数时候你想使用,.children因为通常你不想在DOM操作中循环遍历TextNodes或Comments.
如果您确实想要操作TextNodes,则可能需要.textContent.
Mat*_*hen 21
Element.children仅返回元素子元素,同时Node.childNodes返回所有节点子元素.请注意,元素是节点,因此两者都可以在元素上使用.
我相信childNodes更可靠.例如,MDC(上面链接)指出,IE仅children在IE 9中正确使用.浏览 childNodes器实现者提供的错误空间较小.
到目前为止,很好的答案是,我只想补充一点,您可以使用来检查节点的类型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. | |
Run Code Online (Sandbox Code Playgroud)
请注意,根据Mozilla:
以下常量已被弃用,不再应使用:Node.ATTRIBUTE_NODE,Node.ENTITY_REFERENCE_NODE,Node.ENTITY_NODE,Node.NOTATION_NODE
| 归档时间: |
|
| 查看次数: |
97752 次 |
| 最近记录: |