我创建了一个测验应用程序,我希望应用程序在用户参加测验时一次显示一个问题。这个工作正常,直到我用超过5个问题填充数据库,现在测验显示所有问题,有人可以告诉我为什么会这样吗?
$(document).ready(function() {
var steps = $('form').find(".questions");
var count = steps.size();
steps.each(function(i) {
hider = i + count;
if (count == i + 1) {
var step = i + 1;
$("#next" + step).on('click', submit);
} else {
$("#question_" + hider).hide();
createNextButton(i);
}
});
function submit() {
$.ajax({
type: "POST",
url: "ajax.php",
data: $('form').serialize(),
success: function(msg) {
$("#quiz_form,#demo1").addClass("hide");
$('#result').show();
$('#result').append(msg);
}
});
}
function createNextButton(i) {
var step = i + 1;
var step1 = i + 2;
$('#next' + step).on('click', function() {
$("#question_" + step).hide();
$("#question_" + step1).show();
});
}
setTimeout(submit, 50000);
});
PHP:
$response = $db->prepare("select * from questions WHERE test_ID = '" . $_POST['test_ID'] . "'");
$response->execute();
echo "<form method='post' id='quiz_form'>";
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$count = 1;
while($result=$response->fetch(PDO::FETCH_ASSOC)) {
答案 0 :(得分:0)
对于初学者,您的hider
变量将始终为您的点数+1。如果您有.size()
个5个问题,那么(我会假设)第一次迭代应该隐藏,即
hider = i + count
hider = 0 + 5
hider = 5
$("#question_5").hide();
但是,如果您在PHP末尾w /零索引上生成问题,那么您的上一个问题(您的第5个),应该的ID为question_4
。
如您所见,您的hider
变量永远不会少于5,每增加
steps.each(function(i) {
hider = i + count;
...
});
hider
只会从5增加到10(即#question_10
),这在你的情况下不应该存在。
我想你只需使用
就能让事情更简单$("#question_" + i).hide();