التعامل مع العناصر الأبناء (Children) في DOM

🟦 أولًا: ماذا نقصد بـ “العناصر الأبناء”؟

في 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 = ""