ما هو DOM؟
DOM (Document Object Model) هو تمثيل JavaScript لصفحة HTML كشجرة كائنات. عبره نقرأ ونغيّر أي عنصر في الصفحة ديناميكيًا.
اختيار العناصر
document.getElementById("title"); // بالمعرّف
document.querySelector(".btn"); // أول مطابق لمحدّد CSS
document.querySelectorAll(".item"); // كل المطابقات (قائمة)
document.getElementsByClassName("card"); // بالفئة
document.getElementsByTagName("p"); // بالوسم
🔑
querySelectorوquerySelectorAllالأقوى — يقبلان أي محدّد CSS.
تغيير المحتوى
let el = document.querySelector("#title");
el.textContent = "نص جديد"; // النص فقط (آمن)
el.innerHTML = "<b>نص غامق</b>"; // HTML (احذر من المدخلات غير الموثوقة)
تغيير الأنماط (Styles)
el.style.color = "red";
el.style.fontSize = "20px"; // لاحظ camelCase
el.style.backgroundColor = "#000";
تغيير الفئات (Classes) — الأفضل للتنسيق
el.classList.add("active");
el.classList.remove("hidden");
el.classList.toggle("dark"); // يضيف/يزيل
el.classList.contains("active"); // true/false
تغيير الصفات (Attributes)
el.setAttribute("href", "page.html");
el.getAttribute("href");
el.removeAttribute("disabled");
img.src = "new.jpg"; // وصول مباشر للخصائص الشائعة
إنشاء وإضافة وحذف العناصر
let li = document.createElement("li");
li.textContent = "عنصر جديد";
document.querySelector("ul").appendChild(li); // إضافة
li.remove(); // حذف
التنقّل في الشجرة
el.parentElement // الأب
el.children // الأبناء
el.nextElementSibling // الشقيق التالي
الأخطاء الشائعة
- ❌ تشغيل الكود قبل تحميل الصفحة → العنصر غير موجود بعد؛ استخدم
deferأو ضع الـ script في النهاية. - ❌ استخدام
innerHTMLمع مدخلات المستخدم → خطر XSS؛ فضّلtextContent. - ❌ نسيان أن
querySelectorAllيُرجع قائمة → مرّ عليها بـforEach.
خلاصة
DOM يتيح التحكّم بالصفحة برمجيًا: اختر بـ querySelector، وغيّر المحتوى (textContent)، والأنماط (classList أفضل من style)، والصفات، وأنشئ/احذف العناصر. هو كيف تصبح صفحتك تفاعلية.