Математическият масив на 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);

Основният ми проблем изглежда е, че добавянето на подрезултат не завършва там, където искам.

Когато изберете отговорите, които трябва да ви дадат нула подрезултат точки, в крайна сметка получавате шест. Когато отговорите на въпросите, които трябва да ви дадат петнадесет точки, получавате нула. Ако отговорите по средата, ще получите три или четири.


person Jonathan Burks    schedule 08.06.2016    source източник
comment
Вече преминахте през кода си с дебъгер?   -  person fvu    schedule 08.06.2016
comment
Аз имам. На конзолата не изглежда да има синтактични грешки, които мога да намеря, и нищо друго също не се показва. Мисля, че е написано (сравнително) здраво.   -  person Jonathan Burks    schedule 08.06.2016
comment
Трудно ми е да видя какво очаквате да се случи. Можете ли да намалите това само до subScore7 и може би 8? Предполагам, че subscore започва от 0?   -  person Teepeemm    schedule 08.06.2016
comment
О, забравих да ги покажа. да, подрезултатът започва от нула. Причината всички въпроси да имат различни масиви е, че теглото на всеки въпрос може да бъде променено в бъдеще и реших, че най-лесният начин да го променя е да дам на всеки въпрос лесно разпознаваем масив.   -  person Jonathan Burks    schedule 08.06.2016
comment
Основният ми проблем е, че математиката не се събира. Не разбирам, че ако изберете отговорите, свързани с най-високите числа, получавате шест. Има ли нещо, което не успявам да разбера за математиката на масивите в Javascript?   -  person Jonathan Burks    schedule 08.06.2016


Отговори (1)


Къде да го поставя? Във functions.php? Трябва ли да създам функция около него?
person Jonathan Burks    schedule 08.06.2016