2016-06-08 2 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); 

Моя основная проблема заключается в том, что добавление subscore не заканчивается там, где я хочу.

Когда вы выбираете ответы, которые должны дать вам нулевые точки подсчета, вы получите шесть. Когда вы отвечаете на вопросы, которые должны дать вам пятнадцать очков, вы получаете нуль. Если вы ответите на середину, вы получите три или четыре.

+0

Вы уже проверили свой код с помощью отладчика? – fvu

+0

У меня есть. На консоли нет никаких синтаксических ошибок, которые я могу найти, и ничего больше не появляется. Я думаю, что это написано (относительно) правильно. –

+0

У меня возникли проблемы с тем, что вы ожидаете. Не могли бы вы сократить это только на 'subScore7' и, возможно, на' 8'? Я предполагаю, что 'subscore' начинается с 0? – Teepeemm

ответ

0

Я понял свою собственную ошибку.

Оператор переключателя в конце имеет стандартный набор, как:

alert(subscore) 

Там не было никакого фактическое уведомления для подшкала вне заявления выключателя. Таким образом, функция фактически правильно вычисляла totscore, и я неправильно понял это как предупреждение для значения subscore.

Код на самом деле правильный, я искал ошибку в вычислении, когда моя ошибка была в отображении ответа.

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