为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript中的children和childNodes有什么区别?

JavaScript中的children和childNodes有什么区别?

UYOU 2019-07-31 15:14:04
JavaScript中的children和childNodes有什么区别?我发现自己使用JavaScript和我对面跑去childNodes和children性能。我想知道它们之间的区别是什么。另一个是另一个优先选择?
查看完整描述

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。


查看完整回答
反对 回复 2019-07-31
?
HUH函数

TA贡献1836条经验 获得超4个赞

Element.children仅返回元素子元素,同时Node.childNodes返回所有节点子元素。请注意,元素是节点,因此两者都可以在元素上使用。

我相信childNodes更可靠。例如,MDC(上面链接)指出,IE仅children在IE 9中正确使用。浏览 childNodes器实现者提供的错误空间较小。


查看完整回答
反对 回复 2019-07-31
?
心有法竹

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


查看完整回答
反对 回复 2019-07-31
  • 3 回答
  • 0 关注
  • 1043 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信