Yanıtlar:
Bunun .children
bir Öğe özelliği olduğunu anlayın . 1 Yalnızca Elementler vardır .children
ve 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, .textContent
bunun 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 .children
bir HTMLC seçimidir .
3. Benzer şekilde, .childNodes
bir 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.children
Sadece döner eleman ederken, çocukları Node.childNodes
getiri tüm düğüm çocuklar. Öğelerin düğüm olduğunu unutmayın, bu nedenle her ikisi de öğeler üzerinde kullanılabilir.
childNodes
Daha güvenilir olduğuna inanıyorum . Örneğin, MDC (yukarıda bağlantılıdır) IE'nin children
IE 9'da doğru olduğunu belirtir childNodes
.
.children
yorum düğümlerini filtrelemez, ancak metin düğümlerini filtreler.
.getElementsByTagName('*')
. IE bazen çok sinir bozucu olabilir ...
children
IE'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ü namedItem
tü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 forEach
ile ç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
,length
vevalues
ParentNode.children sağlar
item
,length
venamedItem