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

السؤال

Recommended Posts

  • 0
نشر

المشكلة لديك في جزء assessment.innerHTML حيث لاحظ أن assessment هو حقل إدخال والذي يظهر بداخله ليس خاصية innerHTML بل خاصية value لهذا يجب إستبدال innerHTML ب value هكذا :


function getresult() {
    var num1 = parseFloat(document.getElementById("num1").value);
    var assessment = document.getElementById("assessment");
    if (num1 >= 90) {
        assessment.value = "A";
    } else if (num1 >= 80) {
        assessment.value = "B";
    } else if (num1 >= 70) {
        assessment.value = "C";
    } else if (num1 >= 60) {
        assessment.value = "D";
    } else {
        assessment.value = "F";
    }
}

 

  • 0
نشر

استخدمت assessment.innerHTML لتحديث قيمة حقل الإدخال <input type="text">، والصحيح هو استخدام assessment.value فالخاصية innerHTML تُستخدم مع العناصر التي تحتوي على محتوى نصي داخلي مثل div أو span، أما حقول الإدخال فتُحدث قيمتها عبر value

كذلك يجب التحقق من صحة الإدخال عند إدخال نص أو ترك الحقل فارغاً، لأنّ parseFloat يعيد NaN، فينتهي الشرط إلى عرض "F" دون تنبيه المستخدم، الأفضل التحقق من isNaN(num1) وإظهار رسالة مناسبة.

وجعل حقل التقييم للقراءة فقط، بما أن النتيجة تحسب آلياً، من خلال إضافة readonly لمنع تعديله من قبل المستخدم.

وفصل الـ JavaScript عن HTML من خلال استخدام addEventListener بدلاً من onclick داخل الوسم.

  • 0
نشر

كما تم التوضيح  أن العنصر الذي يحمل المعرف assessment في ملف HTML هو عبارة عن حقل إدخال بيانات <input type="text">، فإنه لا يمتلك محتوى HTML داخلي ليتم تغييره عبر innerHTML.

لتغيير نص داخل حقول الإدخال (<input>)، يجب استخدام الخاصية value.

وكميزة يمكنك تطبيقها في برنامجك هو التحقق من صحة البيانات حيث إذا ضغط المستخدم على زر "Get Result" دون كتابة أي رقم، فإن الدالة parseFloat("") ستعيد قيمة تسمى NaN (Not a Number). في جمل if الشرطية التي كتبتها، جميع الشروط (NaN >= 90، NaN >= 80 الخ...) ستكون نتيجتها false. وبالتالي، سينتقل الكود مباشرة إلى آخر else، وسيعطي المستخدم تقييم "F" على حقل فارغ! بالإضافة إلى ذلك، الكود يقبل أرقاماً غير منطقية، مثل إدخال درجة 150 (سيأخذ A) أو درجة بالسالب (سيأخذ F).

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...