By
Jekins
Всем привет.:yes:
Никак не могу закончить функционал теста на 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>
Question
romoga
Посоветуйте движек инет магазина без замарочек. Уель- продажа стройматериала..
Можно плиз без холивара?
Link to comment
Share on other sites
6 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.