2015-12-15 25 views
-2

total_1不斷帶回未定義。我究竟做錯了什麼?如果總分數大於它,我想增加10,如果不是,我想只增加5分。其他人來的很好,總數只有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

如果你的'midterm','assign','quiz'和'final'輸入具有'type = text'試圖對它們的值執行數學運算將不會給你一個整數。將它們設置爲'type =「number」'或使用'parseInt'。 –

+0

我對他們使用type =「number」。唯一給我定義的是total_1。我知道問題來自我的js而不是html。 –

+0

你的'findFinalMark'函數沒有返回值 –

回答

1

這是很簡單的:

所以它是不確定你不從函數返回任何東西。

所以你需要從函數中返回xsum。聲明變量時也使用var,以免氾濫全局名稱空間。

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

你的意思是讓var sum和var i? –

+0

是的,這就是你如何聲明變量。 – epascarello

+0

感謝它現在的作品。 –

0

你的函數findFinalMark返回和?

+0

不,它應該放在我的if和else語句中。我應該這樣做嗎? (sum> x){ \t \t \t return x = x + 10; \t \t} \t \t否則{ \t \t \t返回X = X + 5; \t \t} –

相關問題