🟦 أولًا: ماذا نقصد بـ “العناصر الأبناء”؟
في 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 = "" |