जवाबों:
समझें कि .children
यह एक तत्व की संपत्ति है । 1 केवल तत्व हैं .children
, और ये बच्चे सभी प्रकार के तत्व हैं। 2
हालांकि, नोड.childNodes
की एक संपत्ति है । किसी भी नोड हो सकते हैं। 3.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 हेरफेर में पाठ या टिप्पणी नोड्स पर लूप नहीं करना चाहते हैं ।
यदि आप पाठ नोड्स में हेरफेर करना चाहते हैं, तो आप शायद .textContent
इसके बजाय चाहते हैं। 4
1. तकनीकी रूप से, यह ParentNode का एक गुण है , जो एक तत्व है जो तत्व द्वारा शामिल किया गया है।
2. वे सभी तत्व हैं क्योंकि .children
एक है HTMLCollection है, जो केवल तत्व हो सकते हैं।
3. इसी तरह, .childNodes
कोई भी नोड पकड़ सकता है क्योंकि यह एक नोडलिस्ट है ।
4. या .innerText
। यहां या यहां अंतर देखें ।
.children
: jsfiddle.net/fbwbjvch/1
Element.children
केवल तत्व बच्चों को Node.childNodes
देता है , जबकि सभी नोड बच्चों को देता है । ध्यान दें कि तत्व नोड हैं, इसलिए दोनों तत्वों पर उपलब्ध हैं।
मेरा मानना childNodes
है कि अधिक विश्वसनीय है। उदाहरण के लिए, एमडीसी (ऊपर लिंक किया गया) नोट करता है कि IE केवल children
IE 9 में सही childNodes
है। ब्राउज़र कार्यान्वयनकर्ताओं द्वारा त्रुटि के लिए कम जगह प्रदान करता है।
.children
टिप्पणी नोड्स को फ़िल्टर नहीं करता है, लेकिन यह टेक्स्ट नोड्स को फ़िल्टर करता है।
.getElementsByTagName('*')
। आईई इतना परेशान कभी कभी हो सकता है ...
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. | |
ध्यान दें कि मोज़िला के अनुसार :
निम्नलिखित स्थिरांक को हटा दिया गया है और अब इसका उपयोग नहीं किया जाना चाहिए: 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.
क्रोम 83 पर
Node.childNodes प्रदान करता है
entries
,forEach
,item
,keys
,length
औरvalues
ParentNode.children प्रदान करता है
item
,length
औरnamedItem