2016-06-08 23 views
0

我有數組作爲單獨的問題分數的順序,然後一個數組基礎上添加的問題,主要的得分得分得分:Javascript數組數學不加正確

var totscore = 0 
var subscore = 0 

var _scores7 = [2, 1, 0]; 
var _scores8 = [3, 2, 1, 0]; 
var _scores9 = [3, 2, 1, 0]; 
var _scores10 = [2, 1, 0]; 
var _scores11 = [1, 0]; 
var _scores12 = [2, 1, 0]; 
var _scores13 = [2, 1, 0]; 

var subScores = [0, 1, 2, 3, 4, 5, 6]; 

的問題然後應該加起來取決於答案分數在單選按鈕上:

if(document.getElementById("q7a").checked){ 
    subscore += _scores7[0]; 
} else if(document.getElementById("q7b").checked){ 
    subscore += _scores7[1]; 
} else if(document.getElementById("q7c").checked){ 
    subscore += _scores7[2]; 
} else alert("Question seven has not been finished."); 

if(document.getElementById("q8a").checked){ 
    subscore += _scores8[0]; 
} else if(document.getElementById("q8b").checked){ 
    subscore += _scores8[1]; 
} else if(document.getElementById("q8c").checked){ 
    subscore += _scores8[2]; 
} else if(document.getElementById("q8d").checked){ 
    subscore += _scores8[3]; 
} else alert("Question eight has not been finished."); 

if(document.getElementById("q9a").checked){ 
    subscore += _scores9[0]; 
} else if(document.getElementById("q9b").checked){ 
    subscore += _scores9[1]; 
} else if(document.getElementById("q9c").checked){ 
    subscore += _scores9[2]; 
} else if(document.getElementById("q9d").checked){ 
    subscore += _scores9[3]; 
} else alert("Question nine has not been finished."); 

if(document.getElementById("q10a").checked){ 
    subscore += _scores10[0]; 
} else if(document.getElementById("q10b").checked){ 
    subscore += _scores10[1]; 
} else if(document.getElementById("q10c").checked){ 
    subscore += _scores10[2]; 
} else alert("Question ten has not been finished."); 

if(document.getElementById("q11a").checked){ 
    subscore += _scores11[0]; 
} else if(document.getElementById("q11b").checked){ 
    subscore += _scores11[1]; 
} else alert("Question eleven has not been finished."); 

if(document.getElementById("q12a").checked){ 
    subscore += _scores12[0]; 
} else if(document.getElementById("q12b").checked){ 
    subscore += _scores12[1]; 
} else if(document.getElementById("q12c").checked){ 
    subscore += _scores12[2]; 
} else alert("Question twelve has not been finished."); 

if(document.getElementById("q13a").checked){ 
    subscore += _scores13[0]; 
} else if(document.getElementById("q13b").checked){ 
    subscore += _scores13[1]; 
} else if(document.getElementById("q13c").checked){ 
    subscore += _scores13[2]; 
} else alert("Question thirteen has not been finished."); 

是這裏收到的分數應該然後在下面的代碼中使用:

switch(true){ 
    case (subscore == 0): 
     totscore += subScores[6]; 
     break; 
    case (subscore >= 1 && subscore <= 3): 
     totscore += subScores[5]; 
     break; 
    case (subscore >= 4 && subscore <= 6): 
     totscore += subScores[4]; 
     break; 
    case (subscore >= 7 && subscore <= 8): 
     totscore += subScores[3]; 
     break; 
    case (subscore >= 9 && subscore <= 11): 
     totscore += subScores[2]; 
     break; 
    case (subscore >= 12 && subscore <= 14): 
     totscore += subScores[1]; 
     break; 
    case (subscore == 15): 
     totscore += subScores[0]; 
     break; 
    default: 
     alert(subscore); 

我的主要問題似乎是,子核添加不會結束在我想要的地方。

當你選擇應該給你零分數點的答案時,你最終會得到六個答案。當你回答應該給你15分的問題時,你會得到零。如果你回答中間,你會得到三到四個。

+0

您是否已經使用調試程序遍歷代碼? – fvu

+0

我有。在控制檯上,似乎沒有任何可以找到的語法錯誤,也沒有其他任何顯示。我認爲它的寫法(相對)很好。 –

+0

我無法看到您期待的事情發生。你能把這個減少到只有'subScore7'和可能'8'嗎?我假設'subscore'從0開始? – Teepeemm

回答

0

我想出了自己的錯誤。

末switch語句具有默認設置爲:

alert(subscore) 

有對小分switch語句之外沒有實際的警報。所以這個函數實際上正確地計算了totscore,並且我誤解了它作爲子核心值的警報。

代碼實際上是正確的,當我的錯誤顯示答案時,我正在計算錯誤。