存储阵列上单击按钮的值

时间:2016-06-06 12:48:25

标签: javascript php jquery arrays

我有一个在不同页面上有多个问题的测验,我想将用户答案存储在一个数组中,以便稍后检查他们的答案是否正确。测验的设置方式是测验的多个部分都有自己的页面,但在这些页面上有多个问题。每个问题都是相继显示的。让我们说第1部分有2个问题,在点击答案按钮后,加载了同一页面。问题是值不会进入数组。只有1个值存储在数组中,当第二个问题被回答时,数组中的第一个值消失,只显示第二个值。     这是我用来在数组中存储按钮值的代码。

 <script>
 $( document ).ready(function() {

           var antwoordenObject1= new Array();
            $('.btn').click(function() {
                 antwoordenObject1.push($(this).val());

                  alert("newArray contents = "+ antwoordenObject1);

            });
       });
</script>

这是我的PHP代码,用于显示问题和多项选择答案:

<?php


$conn = mysqli_connect("127.0.0.1", "root", "", "kinderboekenweek");
$sql = "SELECT * FROM vraag  WHERE object_id_object = (SELECT id_object FROM object WHERE speurtocht_speurtocht_id= ".$SpeurtochtID."  AND id_object = ".$object.") ";
$resultVragen = $conn->query($sql);

$URL = "";


if ($resultVragen->num_rows > 0) {
                        while($rowVragen = $resultVragen->fetch_assoc()) {
                            $arrayVraag[] = $rowVragen['vraag'];
                            $arrayVraag = array_filter(array_merge(array(0), $arrayVraag));
                            $arrayAntwoord[] = $rowVragen['antwoord'];
                            $arrayAntwoord = array_filter(array_merge(array(0), $arrayAntwoord));
                            $arrayOptie1[] = $rowVragen['optie1'];
                            $arrayOptie1 = array_filter(array_merge(array(0), $arrayOptie1));
                            $arrayOptie2[] = $rowVragen['optie2'];
                            $arrayOptie2 = array_filter(array_merge(array(0), $arrayOptie2));
                            $arrayOptie3[] = $rowVragen['optie3'];
                            $arrayOptie3 = array_filter(array_merge(array(0), $arrayOptie3));
                            $arrayOptie4[] = $rowVragen['optie4'];
                            $arrayOptie4 = array_filter(array_merge(array(0), $arrayOptie4));
                            $arrayHint[] = $rowVragen['hint'];
                            $arrayHint = array_filter(array_merge(array(0), $arrayHint));
                        }
}


$result = $conn->query("SELECT COUNT(*) FROM vraag WHERE object_id_object = (SELECT id_object FROM object WHERE speurtocht_speurtocht_id= ".$SpeurtochtID."  AND id_object = ".$object.") ");
if ($result->num_rows > 0) {
                        while($rowCount = $result->fetch_assoc()) {
                            $arrayCount[] = $rowCount;
                            $arrayCount = array_filter(array_merge(array(0), $arrayCount));
                        }
}


if($_SESSION['qno'] < implode($arrayCount[1])){
    if($_SESSION['qno']>$arrayCount[1] && isset($_SESSION['qno']))
        $_SESSION['qno'] = 1;
    elseif($_SESSION['qno']<$arrayCount[1] && isset($_POST['vraag1'])){
       $_SESSION['qno'] += 1;
       unset($_POST['vraag1']);
   } elseif ($_SESSION['qno'] != 1 &&  isset ($_POST['vorige'])){
       $_SESSION['qno'] -= 1;  
   }
}





if($_SESSION['qno'] == implode($arrayCount[1])){
    $URL = "loading1.php";
}else {
    $URL = "speurtochtvragenpagina.php";
}

?>

<form name="exam" method="post" action="<?php echo $URL; ?>">


<?php echo $arrayVraag[$_SESSION['qno']]; ?>  <br>
<input type="hidden" name="vraag1" value="submit" />
<input id = "vraag1"  class = 'btn btn-default' type="submit" name="vraag1" value="<?php echo $arrayOptie1[$_SESSION['qno']]; ?> "> <br>
<input id = "vraag1" class = 'btn btn-default' type="submit" name="vraag1" value="<?php echo $arrayOptie2[$_SESSION['qno']]; ?> "> <br>
<input id = "vraag1"  class = 'btn btn-default' type="submit" name="vraag1" value="<?php echo $arrayOptie3[$_SESSION['qno']]; ?>">  <br>
<input  id = "vraag1" class = 'btn btn-default' type="submit" name="vraag1" value="<?php echo $arrayOptie4[$_SESSION['qno']]; ?>">  <br>

</form> 

3 个答案:

答案 0 :(得分:1)

如果更改页面,则会清除您的js数据。

您必须使用持久数据。

检查local-storage

代码是这样的:

localStorage.setItem("lastname", "Smith");

答案 1 :(得分:0)

当您将测验作为1页进行测试时,您不必存储任何内容,只需进行一次ajax调用即可发布值并返回结果。

答案 2 :(得分:0)

你可以使用map函数将多个元素放在一个数组中,然后使用匹配条件检查foreach循环,但是你必须放入event.preventDefault();在你的js代码的开头!