0

小さなJavascriptクイズを作成しようとしていますが、それを機能させる方法は、ラジオボタン要素の値がオブジェクトプロパティ(correctAnswerというラベル)の値と一致するかどうかを確認することです。

var allQuestions = [{
question: ["Question1?", "Question2?", "Question3"], 
choices: [["choice1-1", "choice1-2", "choice1-3", "choice1-4"], ["choice2-1", "choice2-2", "choice2-3", "choice2-4"], ["choice3-1", "choice3-2", "choice3-3", "choice3-4"]], 
correctAnswer: ["choice 1-4", "choice2-3", "choice3-2"]}];  

var questions = document.getElementById('question');
var button = document.getElementById('next');
var radio = document.getElementsByName('buttons');
var a = document.getElementById('a');
var b = document.getElementById('b');
var c = document.getElementById('c');
var d = document.getElementById('d');
var labels = document.getElementsByName('labels');


for(var j=0; j < radio.length; j++) {
radio[j].value = allQuestions[0].choices[0][j];
}

for (var k=0; k < radio.length; k++) {
labels[k].innerHTML = allQuestions[0].choices[0][k];
}

var score = 0;


questions.innerHTML = allQuestions[0].question[0];
var i = 0;
var correct = allQuestions[0].correctAnswer[i];
button.onclick = function() {

if (i < allQuestions[0].question.length) {
i++;
if(radio.sel)
for(var l=0; l < radio.length; l++) {  
    questions.innerHTML = allQuestions[0].question[i]; //sets the question at top of page
    radio[l].value = allQuestions[0].choices[i][l]; //sets value of each radio button.
    //labels[l].innerHTML = allQuestions[0].choices[i][l]; //sets options for each question
    a.innerHTML = allQuestions[0].choices[i][0];
    b.innerHTML = allQuestions[0].choices[i][1];
    c.innerHTML = allQuestions[0].choices[i][2];
    d.innerHTML = allQuestions[0].choices[i][3];
    } 

}

選択したラジオボタンの値を質問の正解と一致させるには、次のようなものを読み取る必要があると思います。

if(radio.checked.value == allQuestions[0].correctAnswer[i]) {
score++;
}

しかし、関数の先頭に配置すると、特に機能しません。何かアドバイス?

4

1 に答える 1

0

radio.checked は、そのラジオがチェックされているかどうかに関係なく、値でチェーンできないことを示すブール値を返します。

正しい方法は、同じ名前のすべての無線をループして、チェックされた無線の値を取得することです。

value = '';
for( i in radio ) {
    if ( radio[i].checked )
        value = radio[i].value;
}

必要に応じて変更する必要があります

于 2013-03-20T20:07:05.383 に答える