Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

حفظ اختيار السمة

جزء من قسم JavaScript in Action في رحلة HTML على Coddy — الدرس 17 من 27.

عندما ينتقل المستخدمون بين المظهرين الفاتح والداكن، نريد أن يتذكر الموقع خيارهم.
لهذا الغرض، نستخدم <strong>localStorage</strong> في JavaScript. فهي تقوم بتخزين البيانات في المتصفح، وتظل هذه البيانات حتى بعد تحديث الصفحة أو إغلاق المتصفح.

المنطق هو:

  1. عندما يقوم المستخدم بتبديل السمة، احفظ السمة الحالية في localStorage.
  2. عندما يتم تحميل الصفحة، تحقق من localStorage وقم بتطبيق السمة المحفوظة تلقائيًا.

HTML:

<button id="themeToggle">Toggle Theme</button>

CSS:

body.dark-mode {
  background-color: #222;
  color: #fff;
}

يتحقق هذا الكود مما إذا كان المستخدم قد حفظ مسبقاً سمة داكنة في localStorage ويقوم بتطبيقها عند تحميل الصفحة.

عند النقر على الزر، يتم تبديل الوضع الداكن في الصفحة ثم يتم تحديث localStorage بحيث يتم تذكر التفضيل للزيارة القادمة

const button = document.getElementById("themeToggle");

// تطبيق السمة المحفوظة عند تحميل الصفحة
if (localStorage.getItem("theme") === "dark") {
  document.body.classList.add("dark-mode");
}

button.addEventListener("click", function () {
  document.body.classList.toggle("dark-mode");

  // حفظ التفضيل
  if (document.body.classList.contains("dark-mode")) {
    localStorage.setItem("theme", "dark");
  } else {
    localStorage.setItem("theme", "light");
  }
});

هذا يضمن الحفاظ على تفضيلات المستخدم عبر الزيارات لموقعك.

challenge icon

التحدي

سهل

أنشئ مفتاح تبديل للمظهر يتذكر تفضيلات المستخدم.

الخطوات:

  1. عند تحميل الصفحة: تحقق مما إذا كان المستخدم قد اختار الوضع الداكن مسبقاً
    1. إذا تم حفظ "dark" في localStorage، أضف فئة "dark-mode" إلى body
  2. عند النقر على زر التبديل: التبديل بين المظهر الفاتح والداكن
    1. قم بتبديل فئة "dark-mode" على عنصر body
    2. احفظ المظهر الحالي في localStorage

جرّب بنفسك

<!DOCTYPE html>
<html>
<head>
  <title>Theme Preference Example</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <button id="themeToggle">Toggle Theme</button>

  <h1>Saving Theme Preference</h1>
  <p>
    Try switching between light and dark mode using the button above.  
    Refresh the page — your choice is remembered thanks to <strong>localStorage</strong>.
  </p>
  <script src="script.js"></script>
</body>
</html>
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس JavaScript in Action