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

الأحداث

الصفحة تنتظر الزائر: يضغط، فتستجيب. ⏱ نحو 25 دقيقة.

اضغطfunction () {count++ }حدث ← دالة ← تغيّر في الصفحة
بعد هذا الدرس ستستطيع أن:
  • تربط حدثًا بدالة بـ addEventListener.
  • تبني عدّادًا بمتغيّر يتذكر القيمة.
  • تستخدم أحداث click و input و mouseenter.
  • تستخدم event.target لمعرفة العنصر المضغوط.

١الحدث: شيء يفعله الزائر

ضغط زر، أو كتابة حرف، أو مرور الفأرة… كلها أحداث. نطلب من المتصفح: «حين يحدث كذا على هذا العنصر، نفّذ هذه الدالة». هذا هو addEventListener:

<button id="btn">قل مرحبًا</button><p id="out"></p><script src="script.js"></script>
index.html
Console

اضغط الزر في المعاينة. الدالة لا تعمل عند تحميل الصفحة، بل تنتظر الضغطة. ثلاثة أجزاء: العنصر، ثم اسم الحدث، ثم الدالة.

٢عدّاد: متغيّر يتذكر

<button id="minus">−</button><span id="count">0</span><button id="plus">+</button><script src="script.js"></script>
index.html
Console

المتغيّر count معرّف خارج الدوال، فيبقى محفوظًا بين الضغطات. وهكذا تُبنى سلة المشتريات في المتاجر.

٣الوضع الليلي بسطر واحد

classList.toggle مع حدث الضغط: أشهر حيلة في الواجهات:

<button id="theme">🌙 الوضع الليلي</button><p>نص الصفحة.</p><script src="script.js"></script>
index.html
Console

٤أحداث أخرى

<input id="name" placeholder="اكتب اسمك"><p>أهلًا <b id="hello"></b></p><div id="box">مرّر الفأرة هنا</div><script src="script.js"></script>
index.html
Console
الحدثمتى يقع؟
clickالضغط.
inputكل تغيير في محتوى حقل الإدخال. نقرأ القيمة بـ .value.
changeبعد اختيار قيمة من قائمة منسدلة أو مربع اختيار.
mouseenter و mouseleaveدخول الفأرة وخروجها.
keydownضغط مفتاح في لوحة المفاتيح.
submitإرسال نموذج (الدرس القادم).

٥كائن الحدث event

الدالة تستقبل معلومات عن الحدث في معامل نسميه عادة event أو e:

<p>اضغط أي زر:</p><button>قهوة</button> <button>شاي</button> <button>عصير</button><script src="script.js"></script>
index.html
Console

event.target هو العنصر الذي وقع عليه الحدث. هكذا كتبنا دالة واحدة لثلاثة أزرار.

توقّع وتحقّق

ما وظيفة addEventListener؟

استمع للحدث.

اسم حدث الضغط:

بلا on.

قراءة ما كتبه الزائر في حقل:

value.

أين نعرّف متغيّر العدّاد؟

ليبقى محفوظًا.

الخلاصة

تحدٍّ برمجي: عدّاد الأكواب

متوسط

اكتب في script.js عدّاد أكواب القهوة: زر + يزيد، وزر − ينقص (لا يقل عن صفر)، وزر «تصفير» يعيده إلى صفر، ويظهر السعر الإجمالي (الكوب بـ 12) في #total.

المطلوب:
  • زر #plus يزيد #count بواحد.
  • زر #minus ينقص واحدًا، ولا ينزل تحت 0.
  • زر #reset يعيد العدد إلى 0.
  • بعد كل ضغطة تُكتب في #total: الإجمالي: (العدد × 12)
👀 اعرض شكل الناتج المطلوب
الناتج المطلوب
Console
✓ التحقق الآلي من حلّك:
  • زر + يزيد العدد بواحد.
  • زر − ينقص واحدًا.
  • زر التصفير يعيده إلى 0.
  • لا ينزل تحت الصفر.
  • #total يعرض الإجمالي الصحيح.

💡 تلميح 1
اكتب دالة show() تحدّث #count و #total، واستدعها بعد كل تغيير.
💡 تلميح 2
في −: if (count > 0) { count--; }

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

<button id="minus">−</button><span id="count">0</span><button id="plus">+</button><button id="reset">تصفير</button><p id="total">الإجمالي: 0</p><script src="script.js"></script>
انتقل إلى تقييم الدرساختيار من متعدد، وصح وخطأ، وأكمل الفراغ، وتتبّع الناتج.ابدأ التقييم ←

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