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

ما سبب الخطأ خطأ resultAPI تكون undefined بعد تنفيذ fetch بلغة جافاسكربت JS

محمود_سعداوي

السؤال

أنا بصدد القيام بتمرين حول حالة الطقس كالآتي:

1.JPG.39a9c5c766f3e6aae46fc8e35f6465a9.JPG

أريد إدخال درجات الحرارة كل ثلاث ساعات.

كود الجافا سكريبت:

    .then((data) => {
      // console.log(data)
      resultAPI = data;
      description.innerText = resultAPI.current.weather[0].description;
      temperature.innerText = `${Math.trunc(resultAPI.current.temp)} °C`;
      loc.innerText = resultAPI.timezone;

      tod.innerText = date + " - " + month + " - " + year;

      for (let i = 0; i < time.length; i++) {
        let varHour = hour + i * 3;

        if (varHour >= 24) {
          time[i].innerText = `${varHour - 24} h`;
        } else {
          time[i].innerText = varHour + " h";
        }
      }
      console.log(resultAPI);
      for (let j = 0; j < value.length; j++) {
        value[j].innerText = `${Math.trunc(resultAPI.hourly[j * 3].temp)} °C`;
      }
    });

2.JPG.efe7e5a9c83fbe085f6fc8e711b4c626.JPG

3.thumb.JPG.4ff923f2486daabb4a54e1080c18d0d1.JPG

4.JPG.7896e364c9b087e744d2837e2c4d5a94.JPG

5.JPG.d1a4bbc2fafee65d0b90b5d53aa669b3.JPG

ملاحظة: الخطأ يوضحه console كالتالي:

6.JPG.70c22e719b72b37f1f74a2d0c708bb84.JPG

 

الغريب في الأمر أني عندما أستعمل فقط console لايظهر لي الخطأ.

7.JPG.6595ca16de77509dd773f30dca917dca.JPG

الأمر المحير أيضا أني إعتمدت نفس الطريقة في جلب البيانات لكن الخطأ يظهر فقط في السطر الأخير.

كل الشكر و التقدير مسبقا.

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0
بتاريخ 49 دقائق مضت قال محمود سعداوي:

المشكلة لديك هو أن قيمة resultAPI تكون undefined عند طلبها في العبارة البرمجية التي ظهر الخطأ بها.

السبب هو أن الاتصال غير متزامن Async و الشيفرة البرمجية ليست بكامها ضمن then block أي مشكلة أقواس..

انقل القوسين من السطر 48 إلى السطر 66

    .then((data) => {
      // console.log(data)
      resultAPI = data;
      description.innerText = resultAPI.current.weather[0].description;
      temperature.innerText = `${Math.trunc(resultAPI.current.temp)} °C`;
      loc.innerText = resultAPI.timezone;

      tod.innerText = date + " - " + month + " - " + year;

      for (let i = 0; i < time.length; i++) {
        let varHour = hour + i * 3;

        if (varHour >= 24) {
          time[i].innerText = `${varHour - 24} h`;
        } else {
          time[i].innerText = varHour + " h";
        }
      }
      console.log(resultAPI);
      for (let j = 0; j < value.length; j++) {
        value[j].innerText = `${Math.trunc(resultAPI.hourly[j * 3].temp)} °C`;
      }
    });

الملف:

main.js

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 4 ساعات قال شرف الدين2:

برجاء إرفاق المشروع حتى نتمكن من معاينته بشكلٍ أفضل

عذرا لم أفهم بالضبط كيف يكون إرفاق المشروع

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 1 ساعة قال محمود سعداوي:

عذرا لم أفهم بالضبط كيف يكون إرفاق المشروع

يمكن إرفاق الملف مضغوط مباشرة في التعليق، الرابط يحتاج صلاحية وصول

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ منذ ساعة مضت قال Wael Aljamal:

يمكن إرفاق الملف مضغوط مباشرة في التعليق، الرابط يحتاج صلاحية وصول

رجاءا كيف يمكن ذلك

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 41 دقائق مضت قال محمود سعداوي:

رجاءا كيف يمكن ذلك

يمكن ضغط أي مجلد بالطريقة التالية:

62114320ababf_compressfoldertofile-Copy.thumb.jpg.8f7bbeb970cd16a6ace11197ec81b8f1.jpg

ثم في التعليق نقوم بإرفاق الملف المضغوط

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 29 دقائق مضت قال Wael Aljamal:

المشكلة لديك هو أن قيمة resultAPI تكون undefined عند طلبها في العبارة البرمجية التي ظهر الخطأ بها.

السبب هو أن الاتصال غير متزامن Async و الشيفرة البرمجية ليست بكامها ضمن then block أي مشكلة أقواس..

انقل القوسين من السطر 48 إلى السطر 66


    .then((data) => {
      // console.log(data)
      resultAPI = data;
      description.innerText = resultAPI.current.weather[0].description;
      temperature.innerText = `${Math.trunc(resultAPI.current.temp)} °C`;
      loc.innerText = resultAPI.timezone;

      tod.innerText = date + " - " + month + " - " + year;

      for (let i = 0; i < time.length; i++) {
        let varHour = hour + i * 3;

        if (varHour >= 24) {
          time[i].innerText = `${varHour - 24} h`;
        } else {
          time[i].innerText = varHour + " h";
        }
      }
      console.log(resultAPI);
      for (let j = 0; j < value.length; j++) {
        value[j].innerText = `${Math.trunc(resultAPI.hourly[j * 3].temp)} °C`;
      }
    });

الملف:

main.js

تم

أحيانا خطأ قد تراه بسيط و لكن يأخذ منك الكثير من الوقت

مضى أكثر من ثلاث أيام و أنا أحاول.

شكرا جزيلا

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...