Beberapa cara:
if (element.firstChild) {
// It has at least one
}
atau hasChildNodes()
fungsinya:
if (element.hasChildNodes()) {
// It has at least one
}
atau length
properti dari childNodes
:
if (element.childNodes.length > 0) { // Or just `if (element.childNodes.length)`
// It has at least one
}
Jika Anda hanya ingin tahu tentang elemen anak (sebagai lawan dari node teks, node atribut, dll.) Pada semua browser modern (dan IE8 - bahkan IE6) Anda dapat melakukan ini: (terima kasih
Florian !)
if (element.children.length > 0) { // Or just `if (element.children.length)`
// It has at least one element as a child
}
Itu bergantung pada children
properti, yang tidak ditentukan di DOM1 ,
DOM2 , atau DOM3 , tetapi memiliki dukungan yang hampir universal. (Ini berfungsi di IE6 dan yang lebih baru serta Chrome, Firefox, dan Opera setidaknya sejak November 2012, saat ini pertama kali ditulis.) Jika mendukung perangkat seluler
lama, pastikan untuk memeriksa dukungan.
Jika Anda tidak membutuhkan IE8 dan dukungan sebelumnya, Anda juga dapat melakukan ini:
if (element.firstElementChild) {
// It has at least one element as a child
}
Itu bergantung firstElementChild
. Seperti children
, itu tidak didefinisikan di DOM1-3, tetapi tidak seperti children
itu tidak ditambahkan ke IE hingga IE9.
Jika Anda ingin tetap menggunakan sesuatu yang
didefinisikan di DOM1 (mungkin Anda harus mendukung browser yang benar-benar tidak dikenal), Anda harus melakukan lebih banyak pekerjaan:
var hasChildElements, child;
hasChildElements = false;
for (child = element.firstChild; child; child = child.nextSibling) {
if (child.nodeType == 1) { // 1 == Element
hasChildElements = true;
break;
}
}
Semua itu adalah bagian dari DOM1 , dan hampir didukung secara universal.
Ini akan mudah untuk membungkusnya dalam sebuah fungsi, misalnya:
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;
}