🟦 أولًا: ماذا نقصد بـ “العناصر الأبناء”؟
في HTML:
<div id="parent">
<p>فقرة 1</p>
<p>فقرة 2</p>
<span>عنصر آخر</span>
</div>
JavaScriptالعنصر <div>
هو الأب،
والعناصر <p>
, <span>
هي الأبناء (children).
🟦 طرق التعامل مع الأبناء في JavaScript
✅ 1. element.children
- تُرجع جميع الأبناء من نوع عنصر HTML فقط (وليس نصوص أو تعليقات).
- نوع النتيجة:
HTMLCollection
(شبه مصفوفة)
const parent = document.getElementById("parent");
console.log(parent.children); // HTMLCollection of <p> و <span>
console.log(parent.children[0]); // أول ابن
JavaScript✅ 2. element.childNodes
- تُرجع كل الأبناء: العناصر + النصوص + التعليقات.
- نوع النتيجة:
NodeList
console.log(parent.childNodes); // ممكن تلاقي فواصل نصية مثل "\n"
JavaScript✅ 3. الوصول لأول وآخر ابن:
الدالة | النتيجة |
---|---|
firstElementChild | أول عنصر ابن |
lastElementChild | آخر عنصر ابن |
console.log(parent.firstElementChild); // <p>فقرة 1</p>
console.log(parent.lastElementChild); // <span>عنصر آخر</span>
JavaScript✅ 4. التكرار على الأبناء:
for (let child of parent.children) {
console.log(child.tagName); // مثل: P, P, SPAN
}
JavaScript✅ 5. الوصول إلى العنصر الأب لأي ابن:
const paragraph = document.querySelector("#parent p");
console.log(paragraph.parentElement); // يرجع <div id="parent">
JavaScript🟦 حذف أبنـاء
✅ حذف كل الأبناء:
while (parent.firstChild) {
parent.removeChild(parent.firstChild);
}
JavaScriptأو بطريقة أسرع في المتصفحات الحديثة:
parent.innerHTML = ""; // يفرّغ كل المحتوى
JavaScript✅ حذف ابن معين:
const secondParagraph = parent.children[1];
parent.removeChild(secondParagraph);
JavaScript🟨 أمثلة عملية
✅ إنشاء قائمة ديناميكية:
<ul id="myList">
<li>عنصر 1</li>
<li>عنصر 2</li>
</ul>
const list = document.getElementById("myList");
// عرض جميع العناصر
for (let li of list.children) {
console.log(li.textContent);
}
// حذف العنصر الأخير
list.removeChild(list.lastElementChild);
JavaScript✅ تلخيص سريع:
العملية | الكود |
---|---|
جلب الأبناء كـ عناصر فقط | element.children |
جلب الأبناء مع النصوص | element.childNodes |
أول/آخر ابن | firstElementChild / lastElementChild |
التكرار على الأبناء | for (let child of element.children) |
حذف ابن معين | element.removeChild(child) |
حذف كل الأبناء | element.innerHTML = "" |