2014-08-27 3 views
0

Как следует из названия. Как мне это сделать?Оценка оценки из значений массива

Я обязан использовать чистый JS, и я очень к нему знаком (как реально реально новый). Поэтому, пожалуйста, извините мой вопрос noob. :)

Мой массив выглядит следующим образом:

var questionArr = [ 
{ 
    'questionId' : 'Question1', 
    'question' : 'Q1: How many Objects are there? ', 
    'choices' : [ 
     {"id" : "10", "tf" : false, "points" : 0}, 
     {'id' : "11", "tf" : false, "points" : 0}, 
     {'id' : "12", "tf" : false, "points" : 0}, 
     {'id' : "15", "tf" : true, "points" : 10}, 
     {'id' : "16", "tf" : false, "points" : 0} 
    ], 
    'Mchoice' : false, 
    'completed' : false 
}, 
{ 
    'questionId' : 'Question2', 
    'question' : 'Q2: some Question will go here? ', 
    'choices' : [ 
      {'id' : "answer1", "tf" : true, "points" : 5}, 
      {'id' : "answer2", "tf" : false, "points" : 1}, 
      {'id' : "answer3", "tf" : false, "points" : 1}, 
      {'id' : "answer4", "tf" : true, "points" : 10} 
     ], 
     'Mchoice' : true, 
     'completed' : false 
    }, 

и на постоянной основе.

Для каждого выбора отображаются как переключатели или флажки. В зависимости от «Mchoice» будет false/true. Когда я их создаю, каждый из них получает значение «tf», чтобы проверить, правильно ли выбран ответ.

Моя цель - получить оценку, вычисленную в фоновом режиме, добавив точки, если ответ правильный, и вычтите точки, если ответ неверен, но я не могу идти ниже 0 при вычитании. После того, как на все вопросы будет дан ответ, и я нажму кнопку отправки, я хочу посмотреть, сколько из общего количества очков для каждого вопроса было достигнуто. Что-то вроде X из 10 для вопроса 1, а также в конце страницы Что-то общее: X из 100. позволяет просто сказать, что 100 будет общим количеством очков, которые могут быть достигнуты.

Надеюсь, вы знаете, что я имею в виду и могу помочь мне, потому что я действительно застрял на этом в течение дня или более сейчас. Не знаю, как этого добиться. Опять же, я действительно новичок в JS, поэтому, пожалуйста, не будьте суровыми на меня, если в конце концов это очень глупый вопрос :)

+0

использовать вложенные петли для этого, как только вы достичь этого массива. –

+0

Это довольно просто, но как вы узнаете, какой выбор выбрал пользователь? –

+0

Если MChoice означает, что ответ пользователя верный или нет, я вижу несколько правильных ответов там, поэтому, как точно знать, какой ответ пользователь выбрал –

ответ

0

Прежде всего, это не глупый вопрос. Вы должны иметь выбранные варианты, вы можете проверить их по одному или хранить их первыми в массиве затем вычислить счет (как я сделал):

var questionArr = [ 
    { 
     'questionId' : 'Question1', 
     'question' : 'Q1: How many Objects are there? ', 
     'choices' : [ 
      {"id" : "10", "tf" : false, "points" : 0}, 
      {'id' : "11", "tf" : false, "points" : 0}, 
      {'id' : "12", "tf" : false, "points" : 0}, 
      {'id' : "15", "tf" : true, "points" : 10}, 
      {'id' : "16", "tf" : false, "points" : 0} 
     ], 
     'Mchoice' : false, 
     'completed' : false 
    }, 
    { 
     'questionId' : 'Question2', 
     'question' : 'Q2: some Question will go here? ', 
     'choices' : [ 
       {'id' : "answer1", "tf" : true, "points" : 5}, 
       {'id' : "answer2", "tf" : false, "points" : 1}, 
       {'id' : "answer3", "tf" : false, "points" : 1}, 
       {'id' : "answer4", "tf" : true, "points" : 10} 
      ], 
      'Mchoice' : true, 
      'completed' : false 
    } 
] 
var selectedChoicesArray = ["10", "answer4"] //choices that user selected as answers 
var sum = 0; 
for(var i=0; i<questionArr.length; i++) { 
    for(var j=0; j<questionArr[i].choices.length; j++){ 
     if(questionArr[i].choices[j].id == selectedChoicesArray[i]) //the choice which user selected 
      sum += questionArr[i].choices[j].points //matched choice's points will be added to the sum 
    } 
} 
alert("Sum: "+sum); 

в этом случае, как selectedChoicesArray подарки, первый выбранный пользователем выбор для вопроса 1 и четвертого выбора для ответа 2, следовательно, сумма будет равна 10! если вы смените его на:

var selectedChoicesArray = ["15", "answer1"]; 

В этом случае сумма составит 15. Надеюсь, вы поймете эти петли, они довольно просты.

See the demo here

+0

, и если вы хотите проверить и добавить сумма, которую пользователь выбирает (по одному за раз), тогда это будет сделано следующим образом: http://jsfiddle.net/85bkfaqh/2/ –

+0

wow, это потрясающе. Большое спасибо за это.Это не так сложно, как я думал, я действительно просто новичок и думал, что это будет больше кода и сложнее. Вы действительно спасли меня там;) –

+0

добро пожаловать в любое время .. счастливое кодирование (: –

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