Сложнее, чем этот вопрос SO , я после ваших мыслей о подсчете оценки теста, вот мой сценарий:
У меня есть X количество вариантов (любой элемент HTML может быть предоставленкак вариант), из которого пользователь может выбрать комбинацию вариантов в качестве своего ответа.До сих пор я пытаюсь сохранить общий характер:
- поддержание массива правильных ответов
- сравнение выбранных ответов с правильными ответами по элементам указателя
- увеличение оценки на 1, если найдено правильное совпадение
- обработка опционального вопроса по радио отдельно, так как они всегда верны / ложны в любом случае
Пример ниже: предполагается, что 6 узлов отвлекающеговершины 0,1,2 правильны, если выбраны.'selectedAnswers
' - это массив, содержащий значение индекса любых выбранных отвлекающих факторов.'correctAnswers
' - это предопределенный набор правильных индексов отвлекающих факторов.
// Each option is worth a standardised amount, unless custom weightings
// are required - not implemented.
var weighting = (100/this.distractors.length);
var score = 0;
for(var i=0;i<this.selectedAnswers.length;i++){
if( ut.arrayContains(this.correctAnswer, this.selectedAnswers[i]) ){
// Correct answer found, increase total
score += weighting*2;
} else {
if( yd.hasClass(this.distractors[ this.selectedAnswers[i] ], SELECTED_CLASS) ){
// Penalise the score by a double weightingfor selecting an incorrect answer
score -= weighting*2;
//log('reducing score by 2 weightings');
} else {
// Penalise the score by a single weighting for leaving an incorrect node unselected
score -= weighting;
//log('reducing score by 1 weighting');
}
}
}
this.score( (score<0)? 0 : Math.ceil(score) );
Казалось нелогичным уменьшать оценку, когда опция не выбрана, если она была бы неправильной, если бы она была выбрана- но это, казалось, приблизило меня к логике, которой я следую.На самом деле, полученная оценка кажется довольно точной, пока вы не рассмотрите сценарий, в котором вы выбираете все больше и больше неправильных и менее правильных вариантов.
Если я должен, я вырежу демонстрацию из нашей сборкии запустите его, дайте мне знать!
РЕДАКТИРОВАТЬ: Э-э, извините, я слишком много думал об этом, вопрос:
Как я могу доставить точный% баллов с учетом как неправильных, так и правильных ответов?