2015-12-15 2 views
-2

total_1 продолжает возвращать неопределенные. Что я делаю не так? Я хочу добавить 10 к сумме, если делители общего числа больше, чем это, если я не хочу добавлять только 5. Остальные приходят хорошо, но только total_1 появляется неопределенно.Зачем мне здесь оставаться неопределенным?

function findMark(){ 
    var x1 = document.getElementById("fn").value; 
    var x2 = document.getElementById("ln").value; 
    var grade1 = parseFloat(document.getElementById("midterm").value*0.35); 
    var grade2 = parseFloat(document.getElementById("assign").value*0.1); 
    var grade3 = parseFloat(document.getElementById("quiz").value*0.15); 
    var grade4 = parseFloat(document.getElementById("final").value*0.4); 
    var total = Math.round(grade1 + grade2 + grade3 + grade4); 
    var total_1 = findFinalMark(total); 
    document.getElementById("outputDiv").innerHTML = "Name = " + x1 + " " + x2 + "<br>" + "Your mark is = " + total + "%" + "<br>" + "Your Final Mark = " + total_1 + "%"; 

    function findFinalMark (x) { 
    sum = 0; 
    i = 1; 
    while (i < x){ 
     if (x % i == 0){ 
      sum += i; 
     } 
     i++; 
    } 
    if (sum > x) { 
     x = x + 10; 
    } 
    else { 
     x = x + 5; 
    } 
    } 
} 
+0

Если ваши «среднесрочные», «назначать», «quiz» и «final» входы имеют «type = text», пытающиеся выполнить математические операции с их значением, не дадут вам целого. Установите их в 'type =" number "или используйте' parseInt'. –

+0

Я использую type = "number" на них. Единственное, что дает мне неопределенное, - total_1. Я знаю, что проблема связана с моими js, а не с html. –

+0

Функция 'FindFinalMark' не возвращает значение –

ответ

1

Это довольно просто:

Вы ничего не вернуть из функции, так что не определено.

Для этого вам необходимо вернуть x или sum. Также используйте var при объявлении переменных, чтобы вы не заливали глобальное пространство имен.

function findFinalMark (x) { 
    var sum = 0, 
     i = 1; 
    /* your logic */ 
    return x; //or sum or whatever you want 
} 
+0

Вы имеете в виду make var sum и var i? –

+0

Да, так вы объявляете переменные. – epascarello

+0

спасибо, что он работает сейчас. –

0

должно ли ваша функция найти FinalMark вернуть сумму?

+0

Нет, это должно быть то, что я вложил в мои инструкции if и else. Должен ли я что-то делать? if (sum> x) { \t \t return x = x + 10; \t \t} \t \t еще { \t \t \t возвращение х = х + 5; \t \t} –

Смежные вопросы