De plusieurs façons :
if (element.firstChild) {
// It has at least one
}
ou le hasChildNodes()
función:
if (element.hasChildNodes()) {
// It has at least one
}
ou le length
propriété de childNodes
:
if (element.childNodes.length > 0) { // Or just `if (element.childNodes.length)`
// It has at least one
}
Si vous voulez seulement savoir ce qu'est un enfant éléments (par opposition aux nœuds de texte, d'attribut, etc.) sur tous les navigateurs modernes (et IE8 - en fait, même IE6), vous pouvez le faire : (merci Florian !)
if (element.children.length > 0) { // Or just `if (element.children.length)`
// It has at least one element as a child
}
Cela repose sur le children
qui n'a pas été définie dans DOM1 , DOM2 , ou DOM3 mais qui bénéficie d'un support quasi-universel. (Il fonctionne dans IE6 et plus et Chrome, Firefox, et Opera à menos jusqu'en novembre 2012, date à laquelle ce document a été initialement rédigé). Si vous prenez en charge des appareils mobiles plus anciens, veillez à vérifier la prise en charge.
Si vous n'avez pas besoin de la prise en charge d'IE8 et des versions antérieures, vous pouvez également procéder ainsi :
if (element.firstElementChild) {
// It has at least one element as a child
}
Cela repose sur firstElementChild
. Comme children
il n'a pas été défini dans DOM1-3 non plus, mais contrairement à children
il n'a pas été ajouté à IE avant IE9. Il en va de même pour childElementCount
:
if (element.childElementCount !== 0) {
// It has at least one element as a child
}
Si vous voulez vous en tenir à quelque chose de défini dans DOM1 (peut-être devez-vous supporter des navigateurs vraiment obscurs), vous devez faire plus de travail :
var hasChildElements, child;
hasChildElements = false;
for (child = element.firstChild; child; child = child.nextSibling) {
if (child.nodeType == 1) { // 1 == Element
hasChildElements = true;
break;
}
}
Tout cela fait partie de DOM1 et presque universellement soutenu.
Il serait facile d'emballer cela dans une fonction, par exemple :
function hasChildElement(elm) {
var child, rv;
if (elm.children) {
// Supports `children`
rv = elm.children.length !== 0;
} else {
// The hard way...
rv = false;
for (child = element.firstChild; !rv && child; child = child.nextSibling) {
if (child.nodeType == 1) { // 1 == Element
rv = true;
}
}
}
return rv;
}