الدرس 8 من 8

ساعة إيقاف

هدف الدرس

الوقت يُحسب من الساعة لا من العدّ

01

الشرح

أول فكرة تخطر لك عند بناء ساعة إيقاف أن تستعمل setInterval ليزيد عدّادًا كل عُشر ثانية، لكنّ مهلة setInterval حدّ أدنى وليست موعدًا مضمونًا، فالنبضة تتأخّر حين تنشغل الصفحة، والمتصفح يُبطئ المؤقّتات في التبويبات الخلفية إلى نبضة واحدة في الثانية، فتصير عشر دقائق في الخلفية دقيقة واحدة في العدّاد.

والصواب أن تحفظ لحظة البدء بـ Date.now()، ثم تحسب الوقت المنقضي بالطرح في كل مرّة تعرضه، فيكون دور المؤقّت أن يقرّر متى تُحدَّث الشاشة فقط، لا أن يحسب كم مضى من الوقت.

انتبه: لكي تستأنف العدّ بعد الإيقاف تحتاج إلى أن تحفظ الوقت الذي تراكم قبله وتضيفه إلى الفترة الجديدة. وامنع التشغيل المزدوج، لأنّ الضغط على «ابدأ» مرّتين يصنع مؤقّتين لا يُلغى منهما إلا واحد.

02

المطلوب

اربط الأزرار #start و#stop و#reset، واعرض في #time الثواني بمنزلة عشرية واحدة (0.0 ثم 1.3) محسوبة من Date.now()، واجعل زرّ «صفّر» يوقف الساعة ويعيدها إلى 0.0.

الفحوص

6 فحوص
  1. تبدأ من الصفر
  2. «ابدأ» يشغّل العدّ
  3. «أوقف» يجمّد الوقت
  4. الاستئناف يكمل من حيث توقّفت الساعة
  5. «صفّر» يوقف الساعة ويعيدها إلى الصفر
  6. الوقت محسوب من الساعة لا من عدّ النبضات
03

تلميحات

0/3
دروس المسارأتممت 0 من 8

تبني هنا بنفسك ومن الصفر مكوّنات تجدها في كل موقع تقريبًا، مثل التبويبات والنوافذ الحوارية والجداول والإشعارات وعارض الشرائح.

مستواه متقدّم، وفيه 8 دروس مجموع مدّتها ساعتان.

index.html
المعاينة
index.html100%
–/6

اضغط «تشغيل وتصحيح» ليبدأ الفحص.

تجد 6 فحوص في بطاقة «المطلوب».

دروس المسارأتممت 0 من 8

تبني هنا بنفسك ومن الصفر مكوّنات تجدها في كل موقع تقريبًا، مثل التبويبات والنوافذ الحوارية والجداول والإشعارات وعارض الشرائح.

مستواه متقدّم، وفيه 8 دروس مجموع مدّتها ساعتان.