ラジオボタンを使用した選択肢のクイズスクリプトで作業しています。ラジオボタンを選択すると、正解が選択されていればラジオボタンが緑色に強調表示されるという機能を追加したかったのです。誤った回答が選択された場合、選択されたラジオボタンは赤色で強調表示され、正解も緑色で強調表示されます。送信ボタンが有効になります。クイックでラジオボタンが選択されているときに、正しいと間違った答えがハイライト表示されます
送信ボタンをクリックすると、次の質問に進み、クイズが終了するまでプロセスが繰り返されます。問題は、強調表示が送信ボタンがクリックされた後にのみ機能することです。クイズは2番目の質問から作業を停止します。どのように私はこれを修正するのですか?私は以下のjsfiddleとコードを含んでいます。これを手助けできる人もいます。
var pos = 0, test, test_status, question, choice, choices, chA, chB, chC, correct = 0;
var questions = [
["What is 10 + 4?", "12", "14", "16", "B"],
["What is 20 - 9?", "7", "13", "11", "C"],
["What is 7 x 3?", "21", "24", "25", "A"],
["What is 8/2?", "10", "2", "4", "C"]
];
function _(x) {
return document.getElementById(x);
}
function renderQuestion() {
test = _("test");
if (pos >= questions.length) {
test.innerHTML = "<h2>You got " + correct + " of " + questions.length + " questions correct</h2>";
_("test_status").innerHTML = "Test Completed";
pos = 0;
correct = 0;
return false;
}
_("test_status").innerHTML = "Question " + (pos + 1) + " of " + questions.length;
question = questions[pos][0];
chA = questions[pos][1];
chB = questions[pos][2];
chC = questions[pos][3];
test.innerHTML = "<h3>" + question + "</h3>";
test.innerHTML += "<input type='radio' class='choice' name='choices' value='A'id='choA'> <label for='choA'>" + chA + "</label><br>";
test.innerHTML += "<input type='radio' class='choice' name='choices' value='B'id='choB'> <label for='choB'>" + chB + "</label><br>";
test.innerHTML += "<input type='radio' class='choice' name='choices' value='C'id='choC'> <label for='choC'>" + chC + "</label><br>";
test.innerHTML += "<button onclick='checkAnswer()' disabled='disabled' id='choiceSubmit'>Submit Answer</button>";
}
function checkAnswer() {
debugger;
if ($("#test input:checked").val() == questions[pos][4]) {
// correct question clicked
$("#test input:checked+label").css("background-color", "green");
correct++;
}
else {
// wrong question clicked
$("#test input:checked+label").css("background-color", "red");
}
setTimeout(function() {
pos++;
renderQuestion();
}, 1000);
}
$("document").ready(function() {
renderQuestion();
var choiceClicked = false;
if (!choiceClicked) {
$("#test input").change(function() {
choiceClicked = true;
$("#choiceSubmit").removeAttr("disabled");
});
}
});
https://jsfiddle.net/diviseed/n59y2qaa/1/
これは非常に深刻なクイズではないと思いますか?巧みな/技術に精通したユーザーは、ページ上のソースを見ることで簡単に不正行為を行うことができるので、 – ADyson
送信ボタンをクリックする前にハイライトを表示することによって、ユーザーは回答を押すことができ、正解を入力し、ボタンを押します。 –