Как я могу сохранить оценку пользователя в переменной на моем веб-сайте, используя PHP и / или JavaScript? - PullRequest
0 голосов
/ 05 мая 2020

Прямо сейчас я показываю вопрос и возможные ответы на него в модальном окне на моей странице (показано ниже). Кнопка «отправить ответ» отправит форму, но я не могу использовать ее в своей ситуации (я объясняю это в нижней части этого сообщения), поэтому, пожалуйста, не обращайте на нее внимания. Modal screenshot

Я использую приведенный ниже код HTML & PHP, чтобы получить вопрос и ответы из моей базы данных.

<!-- The Modals -->
<div id="myModal" class="modal">
    <!-- Modal content -->
    <div class="modal-content">
        <div class="modal-header">
        <!-- display question as heading -->
        <?php
                while ( $row = $result->fetch_assoc() ) {
                    echo "<h3>" . $row[ "question" ] . "</h3>";
                }
            ?>
        <button id="close1" class="close">&times;</button>
        </div>
        <div class="modal-body">
        <form action="#" method="post" id="quiz">
                <!-- display answers as radio -->
                <div>
                <?php
                    while ($id = $choice_idResult1->fetch_assoc()) {
                    echo '<input type= "radio" name="question1_answers" id="question1_answers_A" value= "' . $id["choice_id"] . '"';
                    }
                ?>
                    <label for="question1_answers_A">
                    <?php while($row = $result2->fetch_assoc()) {echo $row["choice_text"];}
                            $answer1 = $row;
                    ?>
                    </label>
                </div> .....

Когда " При нажатии кнопки «Открыть модальное окно 2» приведенный ниже код JavaScript закрывает модальное окно и открывает следующий.

btn2.onclick = function() {
    checkRadio('question1_answers_B');
    modal.style.display = "none";
    modal2.style.display = "block";
}

Как видите, я вызвал функцию с именем checkRadio и передал ей id радиовхода, который является правильным ответом.

checkRadio затем использует оператор if, чтобы проверить, проверено ли это радио, и если это вызывает другую функцию, которая увеличивает переменную tally.

var tally = 0;

function checkRadio(id) {
    if (document.getElementById(id).checked) {
        addTally();
    }
}

function addTally() {
    tally++;
}

Затем у меня есть функция с именем showTally, результат которой я хочу отображать в заголовке следующего модального окна (в целях тестирования). Однако в следующем модальном окне ничего не отображается, что бы я ни выбрал.

    function showTally() {
    document.getElementById("tally").innerHTML = tally;
}

И в заголовке мода:

<h3 id="tally"></h3>

Modal 2 screenshot

На простом английском sh мне нужно иметь возможность определить, какой радиовход был выбран пользователем, чтобы я мог проверить, что это правильный ответ, и добавить к сумме, которая будет отображаться после последнего вопроса На самом деле я не могу опубликовать форму, так как она закроет модальное окно.

Если вам нужны дополнительные снимки экрана или информация, дайте мне знать.

Ответы [ 2 ]

0 голосов
/ 05 мая 2020

Вы можете использовать localStorage или sessionStorage, он может сохранять информацию в сеансе, информация существует, когда вы обновляете sh или перенаправляете html страницу (тот же домен). Вот пример использования ниже:

var tally = localStorage.getItem('tally') || 0
function addTally() {
    tally++;
    localStorage.setItem('tally', tally)
}
0 голосов
/ 05 мая 2020

Возможно, я неправильно понял вопрос, но это может вам помочь.

var myAnswers1 = document.querySelector("question1_answers");
for(var i=0;i<myAnswers1.length;i++)
   {
       console.log("Question 1, radio index " + i + " is " + myAnswers1[i].checked + ".");
   }

Пример вывода:

Question 1, radio index 0 is false.
Question 1, radio index 1 is true.
Question 1, radio index 2 is true.
...