インタラクティブなクイズに取り組んでいますが、1つの問題に遭遇しました。ある種の時間制限を追加する必要があります(テスト目的で5秒としましょう)。これにより、時間がなくなると、ユーザーがどの段階にいても、クイズは結果の部分にスキップして、すべての未回答の質問を次のようにカウントする必要があります。間違い。
これが私のコードです:
jQuery(function(){
var tourismQuiz = {
answers: { q1: 'd', q2: 'd', q3: 'a', q4: 'c', q5: 'a', q6: 'd', q7: 'd', q8: 'a', q9: 'c', q10: 'a' },
questionLenght: 10,
checkAnswers: function() {
var arr = this.answers;
var ans = this.userAnswers;
var resultArr = []
for (var p in ans) {
var x = parseInt(p) + 1;
var key = 'q' + x;
var flag = false;
if (ans[p] == 'q' + x + '-' + arr[key]) {
flag = true;
}
else {
flag = false;
}
resultArr.push(flag);
}
return resultArr;
},
init: function(){
jQuery('.btnNext').click(function(){
if (jQuery('input[type=radio]:checked:visible').length == 0) {
return false;
}
jQuery(this).parents('.questionContainer').fadeOut(500, function(){
jQuery(this).next().fadeIn(500);
});
var el = jQuery('#progress');
el.width(el.width() + 60 + 'px');
});
jQuery('.btnPrev').click(function(){
jQuery(this).parents('.questionContainer').fadeOut(500, function(){
jQuery(this).prev().fadeIn(500)
});
var el = jQuery('#progress');
el.width(el.width() - 60 + 'px');
})
jQuery('.btnShowResult').click(function(){
var arr = jQuery('input[type=radio]:checked');
var ans = tourismQuiz.userAnswers = [];
for (var i = 0, ii = arr.length; i < ii; i++) {
ans.push(arr[i].getAttribute('id'))
}
})
jQuery('.btnShowResult').click(function(){
jQuery('#progress').width(300);
jQuery('#progressKeeper').hide();
var results = tourismQuiz.checkAnswers();
var resultSet = '';
var trueCount = 0;
for (var i = 0, ii = results.length; i < ii; i++){
if (results[i] == true) {
trueCount = trueCount + 2;
} else {
trueCount = trueCount - 1;
}
resultSet += '<div> Question ' + (i + 1) + ' is ' + results[i] + '</div>'
if (trueCount <= 5) {
jQuery("body").css("background-color", "red");
} else {
jQuery("body").css("background-color", "green");
}
}
resultSet += '<div class="totalScore">Your total score is ' + trueCount + ' / 20</div>'
jQuery('#resultKeeper').html(resultSet).show();
})
}
};
tourismQuiz.init();
})
したがって、ユーザーが押すのを待っ.btnShowResult
てテストを終了するのではなく、時間がなくなった場合は、このボタンを押して実行される機能を実行する必要があります。