我正在网络浏览器中输出测验问题。我想选择答案,然后单击“下一步”按钮切换到应在同一页面中显示的下一个问题。我使用javascript在同一页面上打印所有问题。但是,当我单击下一个时,下一个问题将打印在上一个问题的下方。
有没有办法可以清除页面,以便第二个问题是页面上显示的唯一问题?
我使用标签指向下一个问题。例如,
**在页面test.php * * ****
<form id="q1_id" action="testcalc.php" method="post">
<fieldset>
<legend>
<?php
echo $question;
?>
</legend>
<input type="radio" name="definition1" value="<?php echo $answer1; ?>"><?php echo $answer1; ?><br>
<input type="radio" name="definition1" value="<?php echo $answer2; ?>"><?php echo $answer2; ?><br>
<input type="radio" name="definition1" value="<?php echo $answer3; ?>"><?php echo $answer3; ?><br>
</fieldset>
<button id="b1_id">Next</button>
</form>
执行此页面后,我希望能够只打印url“test.php”中“testcalc.php”中存在的下一个问题。我可以使用javascript执行此操作,但这两个问题都显示在网址“test.php”下。
答案 0 :(得分:0)
好吧,我想您现在可以将您的操作值从action="testcalc.php"
更改为类似action="testcalc.php?part=2"
的内容,第一次提交或点击按钮时,页面会相同,但仍会添加查询字符串part=2
现在,这将帮助您更多地操作页面,因为您可以使用$_GET
方法检查是否应该执行问题的第二部分,如:
if(!$_GET['part'] && empty($_GET['part'])) {
// show **1st part** of the questions
}else if(isset($_GET['part']) && $_GET['part']==2){
// show **2nd part** of the questions
}
现在 - 首次打开页面,或者如果没有单击任何按钮,第一个脚本将运行,如果按下按钮,第二个部分将运行
答案 1 :(得分:0)
这种事情通常的做法是使用post / get发送值,然后使用下一个问题创建隐藏的输入标记,下次将这些隐藏的输入标记传递给下一页,或者你可以做西蒙所说的。
如果您希望人们能够在问题之间进行迁移,那么效率会更高。
您将每个问题添加到不同的页面,并将此代码添加到每个问题:
foreach($_POST as $key => $value) {
// set some validation for the type for keys you want
echo "<input type=\"hidden\" id=\"{$key}\" value=\"{$value}\" />\n";
}
唯一要做的是使用一些javascript设置表单的操作 (决定下一页)。通过这种方式,用户可以迁移到所有问题,而不仅仅是下一个问题。