طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 131 · تقنيات تطوير الواجهات الأمامية
الدرس 25 · الوحدة 8: صفحات الويب التفاعلية

الوصول إلى عناصر الصفحة: DOM

JavaScript تمسك بعناصر الصفحة وتغيّرها أمام الزائر. ⏱ نحو 25 دقيقة.

documentbodyh1pullili
بعد هذا الدرس ستستطيع أن:
  • تشرح شجرة DOM.
  • تختار العناصر بـ querySelector و querySelectorAll.
  • تغيّر النص بـ textContent و innerHTML وتعرف الفرق.
  • تغيّر الشكل بـ style و classList، والسمات مثل src.

١الصفحة شجرة

حين يقرأ المتصفح ملف HTML، يبني منه في الذاكرة شجرة من العناصر اسمها DOM (نموذج كائنات المستند). كل وسم «كائن» يمكن لـ JavaScript أن يقرأه ويغيّره، فتتغير الصفحة أمام الزائر دون إعادة تحميلها.

المعنى
documentالصفحة كلها. منه نبدأ دائمًا.
العنصركل وسم في الصفحة: h1 و p و button…
الأب والأبناءul أب لعناصر li، و body أب لكل ما فيه، كما في الصورة.

٢اختيار عنصر: querySelector

نختار العنصر بـ محدِّدات CSS نفسها التي تعلمتها:

<h1 id="title">مقهى بُنّ</h1><p class="note">نفتح 7 صباحًا</p><script src="script.js"></script>
index.html
Console
الدالةتُرجع
document.querySelector("…")أول عنصر يطابق المحدِّد.
document.querySelectorAll("…")كل العناصر المطابقة (نمر عليها بـ for...of).
document.getElementById("title")العنصر بالمعرّف (طريقة قديمة شائعة، بلا #).

٣تغيير النص والمحتوى

<h1 id="title">مقهى بُنّ</h1><p id="status"></p><ul id="list"></ul><script src="script.js"></script>
index.html
Console
الخاصيةالفرق
textContentنص فقط. لو كتبت فيه وسومًا تظهر كما هي. الأكثر أمانًا.
innerHTMLيفهم الوسوم ويبنيها. لا تضع فيه أبدًا نصًّا كتبه الزائر (ثغرة أمنية تدرسها في مقرر أمن الويب).

٤تغيير الشكل: style و classList

<p id="msg">رسالة مهمة</p><p class="box">صندوق</p><script src="script.js"></script>
index.html
Console

طريقتان: el.style.color لتغيير خاصية واحدة (لاحظ: font-size تُكتب fontSize)، أو الأفضل: جهّز صنفًا في CSS ثم أضفه بـ classList:

الدالةتفعل
classList.add("x")تضيف الصنف.
classList.remove("x")تحذفه.
classList.toggle("x")تضيفه إن لم يوجد، وتحذفه إن وُجد. مفيدة جدًّا مع الأزرار.

٥تغيير السمات

<img id="pic" src="images/coffee.svg" alt="قهوة" width="160"><a id="link" href="#">رابط</a><script src="script.js"></script>
index.html
Console

الصورة في HTML قهوة، لكن JavaScript غيّرتها إلى كعكة قبل أن تراها!

توقّع وتحقّق

ما DOM؟

يبنيها المتصفح من HTML.

اختيار أول عنصر صنفه card:

محدِّد CSS.

لتغيير نص عنصر بأمان:

textContent لا يفسّر الوسوم.

إضافة الصنف إن لم يوجد وحذفه إن وُجد:

toggle.

الخلاصة

تحدٍّ برمجي: لوحة المقهى الذكية

متوسط

الصفحة جاهزة في index.html. اكتب في script.js أوامر تغيّرها دون لمس HTML.

المطلوب:
  • غيّر نص العنوان #title إلى: مقهى بُنّ مفتوح
  • أضف الصنف open (موجود في CSS) إلى العنوان.
  • غيّر صورة #pic إلى images/dessert.svg و alt إلى: حلى اليوم
  • اكتب في الفقرة #count عدد عناصر li في القائمة، مثل: الأصناف: 3
👀 اعرض شكل الناتج المطلوب
الناتج المطلوب
Console
✓ التحقق الآلي من حلّك:
  • نص العنوان: مقهى بُنّ مفتوح
  • العنوان عليه الصنف open.
  • الصورة صارت dessert.svg و alt: حلى اليوم.
  • الفقرة #count: الأصناف: 3

💡 تلميح 1
document.querySelector("#title").textContent = "…";
💡 تلميح 2
عدد العناصر: document.querySelectorAll("li").length

حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.

<h1 id="title">مقهى بُنّ</h1><img id="pic" src="images/coffee.svg" alt="قهوة" width="150"><ul>  <li>قهوة</li>  <li>شاي</li>  <li>كيك</li></ul><p id="count"></p><script src="script.js"></script>
انتقل إلى تقييم الدرساختيار من متعدد، وصح وخطأ، وأكمل الفراغ، وتتبّع الناتج.ابدأ التقييم ←

📝 معلم؟ أرسل ملاحظة للمؤلف عن هذا الدرس