JavaScript中的子节点和子节点之间有什么区别?

JavaScript中的子节点和子节点之间有什么区别?,javascript,dom,Javascript,Dom,我发现自己在使用JavaScript,我遇到了childNodes和childrends属性。我想知道他们之间的区别是什么。也就是说,一个比另一个好吗?了解这是一个属性。1只有元素有。子元素,并且这些子元素都是元素类型。二, 但是,是的属性.childNodes可以包含任何节点。三, 一个具体的例子是: let el = document.createElement("div"); el.textContent = "foo"; el.childNodes.length === 1; // C

我发现自己在使用JavaScript,我遇到了
childNodes
childrends
属性。我想知道他们之间的区别是什么。也就是说,一个比另一个好吗?

了解这是一个属性。1只有元素有
。子元素
,并且这些子元素都是元素类型。二,

但是,是的属性
.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.
大多数情况下,您希望使用
.children
,因为通常您不希望在DOM操作中循环或循环节点

如果确实要操纵文本节点,则可能需要。四,


一,。从技术上讲,它是元素包含的mixin的属性。
2.它们都是元素,因为
.children
是a,它只能包含元素。
3.类似地,
.childNodes
可以容纳任何节点,因为它是一个。
4.或查看差异或。

仅返回元素的子元素,而返回所有节点的子元素。请注意,元素是节点,因此这两个节点在元素上都可用


我相信
childNodes
更可靠。例如,MDC(上面链接)指出IE在IE9中只得到了
子项
childNodes
减少了浏览器实现者出错的空间。

到目前为止,我只想补充一点,您可以使用
nodeType
检查节点的类型:

yourElement.nodeType

这将为您提供一个整数:(取自)

|值|常数|描述||
|-------|----------------------------------|---------------------------------------------------------------|--|
|1 | Node.ELEMENT|u Node |元素节点,如或。||
|2 | Node.ATTRIBUTE |节点|元素的属性。元素属性||
|| |不再在|中实现节点接口|
|| | DOM4规范|
|3 | Node.TEXT| u Node |元素或属性的实际文本|
|4 | Node.CDATA |节|节点|一个CDATA节。||
|5 | Node.ENTITY_REFERENCE|节点|一个XML实体引用节点。在DOM4规范中删除|
|6 | Node.ENTITY|节点|一个XML节点。在DOM4规范中删除|
|7 | Node.PROCESSING |指令|节点| XML文档的处理指令||
|| |例如声明|
|8 | Node.COMMENT|u Node |注释节点。||
|9 |节点。文档|节点|文档节点。||
|10 | Node.DOCUMENT |类型|节点|文档类型节点,例如HTML5文档|
|11 | Node.DOCUMENT_FRAGMENT|Node | DocumentFragment节点。||
|12 | Node.NOTATION | u Node |一个XML节点。在DOM4规范中删除|
请注意,根据:

下列常量已被弃用,不应使用 其他:Node.ATTRIBUTE\u Node、Node.ENTITY\u REFERENCE\u Node、Node.ENTITY\u Node、Node.NOTATION\u Node

选择一个取决于你正在寻找的方法!? 我将与您一起去:

因为它提供了
namedItem
方法,允许我直接获取一个子元素,而无需遍历所有子元素或避免使用
getElementById

e、 g

ParentNode.children.namedItem('ChildElement-ID');//JS
ref.current.children.namedItem('ChildElement-ID');//反应
此.refs.ref.children.namedItem('ChildElement-ID');//Vue

我将与您一起去:

当我使用
window.IntersectionObserver时,它提供了
forEach
方法 e、 g

nodeList.forEach((节点)=>{observer.observe(节点)})
//IE11不支持节点列表上的forEach,但易于多填充。
关于铬83

提供
条目
forEach
项目
长度

提供
项目
长度
命名项


该死的,如果这在IE 6-8上奏效,那将是一个梦想成真。@minitech它确实奏效(为了一些有价值的工作)。显然
.children
不会过滤掉注释节点,但会过滤掉文本节点。@Raynos:与
完全相同。getElementsByTagName('*')
。IE有时会很烦人……有一些支持IE的
children
的shim/polyfill实现。是的,IE似乎有一些问题:实际上,children是parentnode接口的属性,而不是元素。似乎iOS 8.3(可能是其他版本?)不支持XML文档上的
.children
:仅在Microsoft Edge上使用XML节点时遇到问题。微软Edge似乎不喜欢孩子。那很好,我不想让浏览器复制。自然跟进“元素与节点”:
| 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.   |  |