Yanıtlar:
Bunun .childrenbir Öğe özelliği olduğunu anlayın . 1 Yalnızca Elementler vardır .childrenve bu çocukların tümü Element tipindedir. 2
Ancak, Düğümün.childNodes bir özelliğidir . herhangi bir düğüm içerebilir. 3.childNodes
Somut bir örnek şöyle olabilir:
let el = document.createElement("div");
el.textContent = "foo";
el.childNodes.length === 1; // Contains a Text node child.
el.children.length === 0; // No Element children.
Çoğu zaman kullanmak istersiniz, .childrençünkü genellikle DOM manipülasyonunuzdaki Metin veya Yorum düğümleri üzerinde döngü yapmak istemezsiniz .
Metin düğümlerini değiştirmek istiyorsanız, .textContentbunun yerine büyük olasılıkla istersiniz . 4
1. Teknik olarak, Element tarafından dahil edilen bir karışım olan ParentNode özelliğidir .
2. Hepsi birer elementtir çünkü sadece elementler içerebilen .childrenbir HTMLC seçimidir .
3. Benzer şekilde, .childNodesbir DüğümListesi olduğu için herhangi bir düğümü tutabilir .
4. Veya .innerText. Farklılıkları burada veya burada görün .
.children gibi görünüyor : jsfiddle.net/fbwbjvch/1
Element.childrenSadece döner eleman ederken, çocukları Node.childNodesgetiri tüm düğüm çocuklar. Öğelerin düğüm olduğunu unutmayın, bu nedenle her ikisi de öğeler üzerinde kullanılabilir.
childNodesDaha güvenilir olduğuna inanıyorum . Örneğin, MDC (yukarıda bağlantılıdır) IE'nin childrenIE 9'da doğru olduğunu belirtir childNodes.
.childrenyorum düğümlerini filtrelemez, ancak metin düğümlerini filtreler.
.getElementsByTagName('*'). IE bazen çok sinir bozucu olabilir ...
childrenIE'yi destekleyen shim / polyfill uygulamaları vardır.
Şimdiye kadar iyi cevaplar, sadece kullanarak bir düğüm türünü kontrol edebileceğinizi eklemek istiyorum nodeType:
yourElement.nodeType
Bu size bir tamsayı verecektir: ( buradan alınır )
| 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'ya göre :
Aşağıdaki sabitler kullanımdan kaldırılmıştır ve artık kullanılmamalıdır: Düğüm.ATTRIBUTE_NODE, Düğüm.ENTITY_REFERENCE_NODE, Düğüm.ENTITY_NODE, Düğüm.NOTATION_NODE
ParentNode.children ile gideceğim :
Çünkü namedItemtüm çocuklardan döngü yapmadan veya kullanmaktan kaçınmadan doğrudan çocuk elemanlarından birini almamı sağlayan bir yöntem sağlar getElementById.
Örneğin
ParentNode.children.namedItem('ChildElement-ID'); // JS
ref.current.children.namedItem('ChildElement-ID'); // React
this.$refs.ref.children.namedItem('ChildElement-ID'); // Vue
Node.childNodes ile gideceğim :
Örneğin forEachile çalışırken yöntem sağlar gibiwindow.IntersectionObserver
nodeList.forEach((node) => { observer.observe(node) })
// IE11 does not support forEach on nodeList, but easy to be polyfilled.
Chrome 83'te
Node.childNodes sağlar
entries,forEach,item,keys,lengthvevaluesParentNode.children sağlar
item,lengthvenamedItem