Local Storage

localStorage هو جزء من Web Storage API يسمح بتخزين بيانات في المتصفح بشكل دائم (حتى بعد إغلاق المتصفح).
البيانات تبقى محفوظة حتى يتم حذفها يدويًا أو من خلال الكود.

💡 خصائص Local Storage:
الخاصيةالقيمة
التخزيندائم (يبقى حتى يُحذف يدويًا)
السعةحوالي 5 إلى 10 ميجابايت حسب المتصفح
التخزين حسب النطاقنعم (يعمل فقط داخل نفس الموقع/النطاق)
نوع البياناتيتم تخزين البيانات كـ نصوص (Strings) فقط
📦 دوال التعامل مع localStorage:
الوظيفةالدالة
إضافة أو تعديل عنصرlocalStorage.setItem(key, value)
قراءة عنصرlocalStorage.getItem(key)
حذف عنصرlocalStorage.removeItem(key)
حذف كل العناصرlocalStorage.clear()
عدد العناصر الموجودةlocalStorage.length
الحصول على مفتاح حسب الفهرسlocalStorage.key(index)

✅ أمثلة شاملة:

🟢 1. حفظ بيانات:

localStorage.setItem("username", "Yasin");
JavaScript

يخزن مفتاح username بالقيمة Yasin.

🟢 2. قراءة بيانات:

let name = localStorage.getItem("username");
console.log(name); // Yasin
JavaScript

🟢 3. تعديل قيمة موجودة:

localStorage.setItem("username", "Ahmed"); // يتم استبدال القيمة
JavaScript

🟢 4. حذف عنصر:

localStorage.removeItem("username");
JavaScript
🟢 5. حذف جميع العناصر:
localStorage.clear();
JavaScript

🟢 6. معرفة عدد العناصر:

console.log(localStorage.length); // عدد المفاتيح المخزنة
JavaScript

🟢 7. جلب اسم مفتاح حسب ترتيبه:

let firstKey = localStorage.key(0);
console.log(firstKey);
JavaScript

🔁 تخزين واسترجاع كائن (Object)

localStorage.setItem("user", {name: "Ali"}); // ❌ يخزن [object Object]
JavaScript

✅ الصحيح: استخدم JSON

let user = { name: "Ali", age: 25 };
localStorage.setItem("user", JSON.stringify(user));
JavaScript

🟢 قراءة:

let userData = JSON.parse(localStorage.getItem("user"));
console.log(userData.name); // Ali
JavaScript
let color = document.getElementById("color");
let color1 = document.getElementById("color1");

// Apply stored background color on page load
document.body.style.backgroundColor = localStorage.getItem("color");

// When color button is clicked
color.addEventListener("click", () => {
    window.localStorage.setItem("color", "green");
    document.body.style.backgroundColor = "green";
});

color1.addEventListener("click", () => {
    window.localStorage.setItem("color", "blue");
    document.body.style.backgroundColor = "blue";
});
JavaScript

🧪 مثال تطبيقي كامل (HTML + JS)

<input type="text" id="usernameInput" placeholder="اكتب اسمك">
<button onclick="saveName()">💾 حفظ</button>
<button onclick="loadName()">📥 تحميل</button>
<button onclick="deleteName()">🗑️ حذف</button>

<p id="output"></p>

<script>
  function saveName() {
    let name = document.getElementById("usernameInput").value;
    localStorage.setItem("username", name);
    alert("تم الحفظ!");
  }

  function loadName() {
    let name = localStorage.getItem("username");
    document.getElementById("output").innerText = name ?? "لا يوجد اسم محفوظ";
  }

  function deleteName() {
    localStorage.removeItem("username");
    alert("تم الحذف");
  }
</script>
JavaScript
⚠️ ملاحظات مهمة:
  • لا يمكن تخزين تواريخ أو دوال أو كائنات مباشرة بدون تحويلها إلى نصوص.
  • localStorage يعمل فقط في المتصفح (client-side).
  • كل موقع يملك مساحة تخزين مستقلة.
  • غير مناسب لتخزين بيانات حساسة (لأنه قابل للعرض من أدوات التطوير بسهولة).
🎁 مقارنة سريعة مع sessionStorage
الميزةlocalStoragesessionStorage
المدة الزمنيةدائمحتى غلق التبويب فقط
المساحة~5-10MB~5MB
المشاركة بين التبويباتنعملا