这是检查被点击的无线电与结果进行比较并向上滑动的脚本:
<script>
$(document).ready(function(){
$("input:radio").change(function(){
checkResult(this);
});
});
function checkResult(el)
{
//get the radio button value
var clickedvalue=$(el).val() ;
$this=$(el).parent("div.QA");
var hiddenanswer=$this.find(".hidden_result").val();
//call to next function to check result
var report=checkAnswer(clickedvalue,hiddenanswer);
if(report)
{
$this.find(".report").html("correct");
}
else{
$this.find(".report").html("Incorrect");
}
function checkAnswer(click,answer){
if(click==answer){
return true;
}
else{
return false;
}
}
$this.delay(500).slideUp();
}
</script>
这是 PHP 从数据库中提取问题和选项。我使用时间戳作为name
,使每个问题(广播)的名称不同。
<?php
$dbconnect=mysqli_connect('localhost','root','','quiz')or die("Error Connecting to database"); $query="select * from question_answer ";
$result=mysqli_query($dbconnect,$query);
?>
<form method="get" action="">
<div id="container">
<?php
while($rows=mysqli_fetch_array($result))
{
echo '<div class="QA">';
echo '<h1>'.$rows['question'].'</h1>'.'<br/>';
echo '<input type="radio" class="check" name="'.$rows['radioname'].'" value="A">'.$rows['option1'].'</input>';
echo '<input type="radio" class="check" name="'.$rows['radioname'].'" value="A">'.$rows['option2'].'</input>';
echo '<input type="radio" class="check" name="'.$rows['radioname'].'" value="A">'.$rows['option3'].'</input>';
echo '<input type="radio" class="check" name="'.$rows['radioname'].'" value="A">'.$rows['option4'].'</input>';
echo '<br/>';
echo '<div class="report"></div>';
echo'</div>';
}
?>
</div>
</form>
答案 0 :(得分:0)
现在我已正确缩进代码,我可以看到你错过了CheckResult函数的结束}
。
function checkResult(el)
{
...
else{
$this.find(".report").html("Incorrect");
}
} // <- this is missing!
缩进代码是一个好主意,因为这样可以更容易地阅读和查找这样的错误。我也会在你如何放置开口和闭合牙箍方面保持一致 - 选择一种风格并坚持下去。我不知道是否仍然如此,但是当您将开口括号放在这样一行的末尾时,JavaScript会更有效:
function checkResult(el){
//get the radio button value
var clickedvalue = $(el).val();
$this = $(el).parent("div.QA");
var hiddenanswer = $this.find(".hidden_result").val();
//call to next function to check result
var report = checkAnswer(clickedvalue,hiddenanswer);
if(report){
$this.find(".report").html("correct");
}else{
$this.find(".report").html("Incorrect");
}
}
另一个提示是,您可以通过以下方式简化checkAnswer功能:
function checkAnswer(click,answer){
return (click==answer); // this will return true or false
}
但是,根据点击和回答的值范围,您可能希望使其更加健壮并检查无效值。
我还鼓励你研究PHP中的heredoc语法 - 这是处理长字符串的一种很好的方法,特别是如果它们同时包含单引号和双引号。这是关于它的S/O question。