الدرس 8 من 8

التقسيم إلى صفحات

هدف الدرس

رقم الصفحة في الحالة والقصّ عند الرسم

01

الشرح

القائمة التي فيها ألف عنصر لا تُعرض دفعة واحدة، بل تُقسَّم إلى صفحات، فتحفظ في الحالة رقمًا واحدًا هو رقم الصفحة الحالية، وتحسب منه الباقي عند الرسم: من أين يبدأ القصّ، وكم عدد الصفحات كلّها، وأيّ زرّ يجب تعطيله.

والحساب سطران: start = (page - 1) * PER_PAGE ثم items.slice(start, start + PER_PAGE)، والدالة slice لا تعدّل الأصل ولا تعطي خطأً إن تجاوزت نهاية المصفوفة، فتظهر الصفحة الأخيرة الناقصة صحيحة دون أي جهد منك.

والأخطاء كلّها عند الحدود، فإن حسبت عدد الصفحات بـ Math.floor ضاعت الصفحة الأخيرة الناقصة، لأن 23 عنصرًا تحتاج Math.ceil(23 / 5) أي 5 صفحات لا 4، وإن تركت زرّ «التالي» مفعّلًا في الصفحة الأخيرة قاد المستخدم إلى صفحة فارغة.

02

المطلوب

اعرض خمسة عناصر من الصفحة state.page (والترقيم يبدأ من 1)، واكتب في #info نصًّا مثل «صفحة 1 من 5»، وعطّل #prev في الصفحة الأولى و#next في الأخيرة، واجعل الزرّين يغيّران state.page ثم يعيدان الرسم.

الفحوص

6 فحوص
  1. الصفحة الأولى تعرض من «منتج 1» إلى «منتج 5» فقط
  2. زرّ «التالي» ينقل إلى العناصر الخمسة التالية
  3. الصفحة الأخيرة تعرض العناصر الثلاثة الباقية
  4. زرّ «السابق» معطَّل في الصفحة الأولى و«التالي» في الأخيرة
  5. النصّ يبيّن رقم الصفحة مثل «صفحة 1 من 5»
  6. الرسم يعتمد على state.page وحدها
03

تلميحات

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

الواجهة تُبنى من البيانات، فتتعلّم هنا أن تصفّي البيانات وترتّبها وتجمّعها دون أن تعدّل الـ DOM مباشرة.

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

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

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

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

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

الواجهة تُبنى من البيانات، فتتعلّم هنا أن تصفّي البيانات وترتّبها وتجمّعها دون أن تعدّل الـ DOM مباشرة.

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