回答:
Elementの.children
プロパティであることを理解してください。1要素のみがを持ち、これらの子はすべて要素タイプです。2.children
ただし、.childNodes
はNodeのプロパティです。.childNodes
任意のノードを含めることができます。3
具体的な例は次のとおりです。
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操作でTextノードまたはCommentノードをループしたくないためです。
Textノードを操作したい場合は、.textContent
代わりに使用することをお勧めします。4
1.技術的には、Elementに含まれるミックスインであるParentNodeの属性です。
2.ので、彼らはすべての要素が.children
あるHTMLCollection要素のみを含めることができ、。
3.同様に、NodeListである.childNodes
ため、任意のノードを保持できます。
4.または.innerText
。ここまたはここの違いを参照してください。
.children
XMLドキュメントをサポートしていないようです:jsfiddle.net/fbwbjvch/1
Element.children
要素の子のみをNode.childNodes
返し、すべてのノードを返します子。要素はノードであるため、どちらも要素で使用できます。
私childNodes
はより信頼できると信じています。たとえば、MDC(上記にリンク)は、IE children
がIE 9でのみ正しく childNodes
機能したことを示しており、ブラウザーの実装者によるエラーの余地が少なくなっています。
.children
コメントノードは除外されませんが、テキストノードは除外されます。
.getElementsByTagName('*')
です。IEはときどき迷惑なことがあります...
children
IEをサポートするシム/ポリフィルの実装があります。
これまでのところ良い回答ですが、ノードのタイプを確認できることを追加したいだけです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
私は行きますParentNode.children:
それが提供したようnamedItem
に私を可能にする方法を直接、すべての子どもたちをループまたは使用することを回避することなく、子要素のいずれかを取得するgetElementById
など
例えば
ParentNode.children.namedItem('ChildElement-ID'); // JS
ref.current.children.namedItem('ChildElement-ID'); // React
this.$refs.ref.children.namedItem('ChildElement-ID'); // Vue
私は行きますNode.childNodes:
それはforEach
私が使用するときの方法を提供するので、window.IntersectionObserver
例えば
nodeList.forEach((node) => { observer.observe(node) })
// IE11 does not support forEach on nodeList, but easy to be polyfilled.
Chrome 83の場合
Node.childNodes提供し
entries
、forEach
、item
、keys
、length
およびvalues
ParentNode.childrenは
item
、length
およびnamedItem