اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

شكل البيانات في التخزين المحلي يكون كالتالي:

2025-06-16_23-01-56.thumb.PNG.3085724b1f8f58b37c43564c9b1ddbbb.PNG

{"language":"python","recentProjects":[{"id":"174604085757497282027352","title":"Untitled Project","description":""}]}

لاحظ عبارة عن كائن JSON ولكن البيانات في ذلك الكائن في شكل سلسلة نصية " "

وsetitem هي لتخزين البيانات في التخزين المحلي للمتصفح، حيث تستقبل معاملين الأول اسم المفتاح key الذي نريده لتعيين مفتاح للوصول لتلك البيانات من أجل استردادها أي هي الـ value التي في الصورة، والمعامل الثاني هو البيانات نفسها لكن في شكل سلسلة نصية وذلك يتم من خلال JSON.stringify.

ثم نستخدم  دالة أو ميثود getItem من أجل استرداد تلك البيانات عن طريق اسم المفتاح الذي حددناه، ثم نقوم بتحويلها من شكل سلسلة نصية إلى كائن جافاسكريبت تفهمه اللغة عن طريق JSON.parse لكي نصل للخواص التي به والتي تحمل القيم.

قم بتجربة التالي لتفهم ما أقصد:

<!DOCTYPE html>
<html>
<head>
    <title>Local Storage</title>
</head>
<body>
    <h1>Local Storage Example</h1>
    <button onclick="saveData()">Save Data</button>
    <button onclick="getData()">Get Data</button>
    <p id="output"></p>

    <script>
        function saveData() {
            localStorage.setItem('username', 'Ali');

            const user = {
                name: 'Ali',
                age: 25,
                city: 'Cairo'
            };
            localStorage.setItem('userDetails', JSON.stringify(user));

            document.getElementById('output').innerText = 'Data saved successfully!';
        }

        function getData() {
            const username = localStorage.getItem('username');

            const userDetails = JSON.parse(localStorage.getItem('userDetails'));

            let output = `Username: ${username}\n`;
            if (userDetails) {
                output += `Name: ${userDetails.name}, Age: ${userDetails.age}, City: ${userDetails.city}`;
            } else {
                output += 'No user details found!';
            }

            document.getElementById('output').innerText = output;
        }
    </script>
</body>
</html>

 

  • 0
نشر

في التخزين المحلي (Local Storage)  الدالتين setItem و getItem هما جزء من كائن localStorage ويستخدمان لحفظ البيانات واسترجاعها.

فإن setItem تستخدم لحفظ القيمة التي تريدها في التخزين المحلي باستخدام مفتاح (key).

وgetItem تستخدم لإسترجاع القيمة المحفوظة مسبقا في الدالة setItem باستخدام نفس المفتاح.

فمثلا تخيل أننا نريد إنشاء موقع باللغتين العربية والإنجليزية فكيف نستطيع معرفة اللغة التي إختارها المستخدم الحالي ؟ وحتى لو قام بإغلاق المتصفح والدخول للموقع مرة أخرى نريد معرفة أخر لغة هو قام بإختيارها .

هنا نستخدم التخزين المحلي لتحقيق ذلك.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>تبديل اللغة</title>
</head>
<body>

  <h1 id="title"></h1>
  <p id="message"></p>
  <button onclick="toggleLanguage()">تبديل اللغة</button>

  <script>
    // النصوص باللغتين
    const translations = {
      en: {
        title: "Welcome",
        message: "English Text"
      },
      ar: {
        title: "مرحا",
        message: "نص باللغة العربية"
      }
    };

    // دالة لتغيير النصوص حسب اللغة المختارة
    function applyLanguage(lang) {
      document.getElementById('title').textContent = translations[lang].title;
      document.getElementById('message').textContent = translations[lang].message;
    }

    // دالة لتبديل اللغة
    function toggleLanguage() {
      let currentLang = localStorage.getItem('language') || 'en';
      let newLang = currentLang === 'en' ? 'ar' : 'en';
      localStorage.setItem('language', newLang);
      applyLanguage(newLang);
    }

    // عند تحميل الصفحة، استخدم اللغة المخزنة أو الإنجليزية كافتراضي
    window.onload = () => {
      const savedLang = localStorage.getItem('language') || 'en';
      applyLanguage(savedLang);
    };
  </script>

</body>
</html>

وهكذا لاحظ كيف قمنا بتخزين قيمة اللغة في التخزين المحلي عند تغير اللغة . وهكذا إذا أغلق المستخدم الصفحة أو المتصفح وقام بفتحها مرة أخرى أو حتى إعادة تحميل الصفحة سيتم إستخدام أخر لغة قام بإختيارها.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...