Jump to content

Jekins

Newbie
  • Posts

    2
  • Joined

  • Last visited

Everything posted by Jekins

  1. Всем привет.: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>
  2. У #content убери float: left;это значение означает обтикание элемента с правого края и фиксация его с левого. Если же так сильно хочется оставить там float: left;, то к диву с #main добавь класс clearfix, а в стилях пропиши это: .clearfix:after { content: " "; /* Older browser do not support empty content */ visibility: hidden; display: block; height: 0; clear: both; }
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy