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

إنشاء العناصر وحذفها: قائمة مهام

نبني الصفحة من البيانات: نضيف العناصر ونحذفها بالبرمجة. ⏱ نحو 30 دقيقة.

مهمة جديدة…أضفمراجعة الدرس✕حل التحدي✕تسليم المشروع✕
بعد هذا الدرس ستستطيع أن:
  • تنشئ عناصر جديدة بـ createElement وتضيفها بـ append.
  • تبني قائمة من مصفوفة بيانات.
  • تحذف العناصر بـ remove.
  • تبني تطبيق قائمة مهام كاملًا، وتتعرف على localStorage.

١إنشاء عنصر جديد

حتى الآن غيّرنا عناصر موجودة. الآن ننشئ عناصر جديدة لم تكن في HTML، في ثلاث خطوات:

<ul id="list">  <li>قهوة</li></ul><script src="script.js"></script>
index.html
Console
الدالةتفعل
document.createElement("li")تنشئ عنصرًا في الذاكرة (لا يظهر بعد).
parent.append(el)تضيفه في آخر الأب، فيظهر.
parent.prepend(el)تضيفه في أول الأب.
el.remove()تحذف العنصر من الصفحة.

٢من مصفوفة إلى قائمة

هكذا تعرض المتاجر منتجاتها: بيانات في مصفوفة، وحلقة تنشئ عنصرًا لكل منتج:

<div id="menu"></div><script src="script.js"></script>
index.html
Console

٣المشروع: قائمة مهام

نجمع كل ما تعلمناه: حدث، وقراءة حقل، وإنشاء عنصر، وحذفه:

<form id="form">  <input id="task" placeholder="مهمة جديدة…">  <button>أضف</button></form><ul id="list"></ul><p id="count">لا توجد مهام</p><script src="script.js"></script>
index.html
Console

جرّب في المعاينة: أضف مهام، واضغط على مهمة لتشطبها، واضغط ✕ لتحذفها. لاحظ أن كل مهمة لها زر حذف خاص بها، يعرف أي li يحذف.

٤حفظ المهام: localStorage

لو حدّثت الصفحة تختفي المهام، لأنها في الذاكرة فقط. المتصفح يوفر مخزنًا صغيرًا يبقى بعد إغلاق الصفحة:

// حفظ: localStorage يخزن النصوص فقط، فنحوّل المصفوفة إلى JSONlocalStorage.setItem("tasks", JSON.stringify(["مراجعة", "تسليم"])); // قراءة عند فتح الصفحةconst saved = JSON.parse(localStorage.getItem("tasks")) || [];

جرّب هذا في ملفك على جهازك (المعاينة هنا معزولة لا تحفظ). البيانات تبقى في متصفح هذا الجهاز فقط؛ أما الحفظ للجميع فمكانه قاعدة بيانات في الخادم.

توقّع وتحقّق

ما الذي ينشئ عنصر li جديدًا؟

createElement.

أنشأت العنصر لكنه لا يظهر. ماذا نسيت؟

يجب إضافته إلى أب.

حذف العنصر el من الصفحة:

remove.

عدد أبناء القائمة list:

children.

الخلاصة

تحدٍّ برمجي: قائمة المشتريات

متقدم

اكتب في script.js قائمة مشتريات: يكتب الزائر صنفًا ويضغط «أضف»، فيظهر في القائمة مع زر حذف، ويتحدث العدد.

المطلوب:
  • عند الإرسال: أنشئ li فيه اسم الصنف وأضفه إلى #list.
  • لا تُضاف القيمة الفارغة.
  • يُفرّغ الحقل بعد الإضافة.
  • لكل li زر بالصنف del يحذفه.
  • #count يعرض: الأصناف: (العدد) بعد كل إضافة وحذف.
👀 اعرض شكل الناتج المطلوب
الناتج المطلوب
Console
✓ التحقق الآلي من حلّك:
  • إضافة صنف تنشئ li فيه اسمه.
  • القيمة الفارغة لا تُضاف.
  • الحقل يُفرّغ بعد الإضافة.
  • زر del في كل li يحذفه.
  • #count يطابق عدد الأصناف.

💡 تلميح 1
const li = document.createElement("li"); … list.append(li);
💡 تلميح 2
زر الحذف: del.addEventListener("click", function () { li.remove(); updateCount(); });

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

<form id="form">  <input id="item" placeholder="صنف جديد">  <button>أضف</button></form><ul id="list"></ul><p id="count">الأصناف: 0</p><script src="script.js"></script>
انتقل إلى تقييم الدرساختيار من متعدد، وصح وخطأ، وأكمل الفراغ، وتتبّع الناتج.ابدأ التقييم ←

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