Всем привет.
Никак не могу закончить функционал теста на javascript.
Суть теста проста, есть вопрос, ответы и список результатов. При выборе ответа он отнимает/прибавляет значения к результатам, т.е. каждый ответ, по своему влияет сразу на весь массив результатов. В итоге, подсчитывается сумма всех баллов для каждого результата и 3 с наибольшим количеством выдаются пользователю.
Я написал скрипт структуры и влияния ответов на результаты, а так же вывод вопросов и ответов к ним. Но никак не могу понять, как теперь связать выбранный ответ с сабмитом и при клике на кнопку сабмит, произвести экшин этого ответа, который произведёт начисление балов результатам.
Очень прошу у вас помощи.
Вот что у меня получилось на данный момент (вопросы в рабочей версии, буду выводиться по очереди, а не все сразу):
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">
<script src="http://code.jquery.com/jquery-2.1.0.min.js"></script>
</head>
<body>
<script>
var driver = {
title: 'водитель',
result: 0
};
var spaceman = {
title: 'космонафт',
result: 0
};
var doctor = {
title: 'доктор',
result: 0
};
var question = [
{
indicator: 1,
title: "вам нравится водить больше чем летать?",
answers: [
{
title: "да",
action: function() {
driver.result = driver.result + 1;
spaceman.result = spaceman.result - 1;
doctor.result = doctor.result + 1;
}
},
{
title: "нет",
action: function() {
driver.result = driver.result - 1;
spaceman.result = spaceman.result + 1;
doctor.result = doctor.result - 1;
}
}
]
},
{
indicator: 2,
title: "нравится лечить людей?",
answers: [
{
title: "да",
action: function() {
driver.result = driver.result - 1;
spaceman.result = spaceman.result - 1;
doctor.result = doctor.result + 1;
}
},
{
title: "нет",
action: function() {
driver.result = driver.result + 1;
spaceman.result = spaceman.result + 1;
doctor.result = doctor.result - 1;
}
},
{
title: "не знаю",
action: function() {
driver.result = driver.result - 2;
spaceman.result = spaceman.result - 2;
doctor.result = doctor.result - 1;
}
}
]
}
];
function showAnswer(answerTitle, answerName, valueId) {
var context = '<label class="radio">' +
'<input type="radio" name="answer' + answerName + '" value="val' + valueId + '">' +
answerTitle.title +
'</label>';
$('#content').append(context);
}
function showSection(id) {
var q = question[id];
var a = q.answers[id];
var ind = q.indicator;
if (q.answers.length > 0) {
$('#content').append('<h3>' + q.title + '</h3>');
for (var i = 0; i < q.answers.length; i++) {
showAnswer(q.answers[i], ind, i);
}
}
}
$(document).ready(function() {
showSection(0);
showSection(1);
});
function check_me() {
with (document.test) {
// if ($('input').is(':checked')) {
// question[0].answers[0].action();
// console.log(driver.result);
// console.log(spaceman.result);
// console.log(doctor.result);
// }
}
}
</script>
<form method="post" name="test">
<section id="content">
</section>
</form>
<br /><br />
<input onclick="check_me()" type="button" value="Показать результат"/>
</body>
</html>