🎯 ما المقصود بـ DOM Traversing؟
هي طرق للوصول إلى عناصر مرتبطة ببعضها مثل:
- العنصر الأب (Parent)
- العنصر الابن (Child)
- العنصر الأخ (Sibling)
- أول/آخر عنصر (First/Last Element)
✅ أهم دوال وخصائص DOM Traversing
الخاصية/الدالة | الوصف |
---|---|
.parentElement | العنصر الأب |
.children | جميع الأبناء (HTMLCollection) |
.firstElementChild | أول عنصر ابن |
.lastElementChild | آخر عنصر ابن |
.nextElementSibling | العنصر الأخ التالي |
.previousElementSibling | العنصر الأخ السابق |
.childNodes | جميع العقد (نصوص + عناصر) |
.closest(selector) | أقرب عنصر أب يطابق محدد |
🧪 مثال عملي
<div class="card">
<h3>عنوان</h3>
<p>وصف هنا</p>
<button>احذف</button>
</div>
const button = document.querySelector("button");
// الوصول إلى العنصر الأب (div.card)
const card = button.parentElement;
// حذف البطاقة بالكامل
button.onclick = () => {
card.remove();
};
JavaScript🔁 الوصول إلى الأطفال
<ul id="myList">
<li>عنصر 1</li>
<li>عنصر 2</li>
<li>عنصر 3</li>
</ul>
const ul = document.getElementById("myList");
// كل الأبناء (عناصر فقط)
console.log(ul.children); // [li, li, li]
// أول ابن
console.log(ul.firstElementChild.textContent); // "عنصر 1"
// آخر ابن
console.log(ul.lastElementChild.textContent); // "عنصر 3"
JavaScript🔁 الوصول إلى الإخوة (Siblings)
<div>
<span id="s1">أول</span>
<span id="s2">ثاني</span>
<span id="s3">ثالث</span>
</div>
const s2 = document.getElementById("s2");
// العنصر السابق
console.log(s2.previousElementSibling.textContent); // "أول"
// العنصر التالي
console.log(s2.nextElementSibling.textContent); // "ثالث"
JavaScript🔎 استخدام .closest()
<div class="parent">
<div class="child">
<span id="inner">اضغط هنا</span>
</div>
</div>
const span = document.getElementById("inner");
const closestParent = span.closest(".parent");
console.log(closestParent); // div.parent
JavaScript🔍 الفرق بين .children
و .childNodes
الخاصية | ماذا ترجع؟ |
---|---|
children | فقط العناصر (بدون النصوص أو الفراغات) |
childNodes | جميع العقد (عناصر + نصوص + تعليقات…) |
✅ خلاصة:
الخاصية | الوظيفة |
---|---|
parentElement | العنصر الأب |
children | الأبناء كعناصر |
firstElementChild | أول ابن عنصر |
lastElementChild | آخر ابن عنصر |
nextElementSibling | الأخ التالي |
previousElementSibling | الأخ السابق |
closest(selector) | أقرب عنصر يطابق المحدد |
childNodes | كل العقد بما فيها النص |