1

私はこれで髪を引き裂いています、初心者のアラート。

JQueryではなくストレートJSを使用して基本的なクイズを作成しようとしていますが、あまり運がありません。

ラジオボタンを正しくループしてユーザーの選択を確認する方法がわかりません。コードは正しいと確信していますが、機能していません。

問題の「名前」が.innerHTMLによって生成されているため、ページの読み込み時に技術的に存在しないという事実と関係がありますか?

ここに JSFiddle があります: http://jsfiddle.net/AU2ve/

そして、これが私のループです。私が言ったように、大丈夫だと確信しています。

// Check which answer selected (Test)

function checkAnswer() {

    var answerChoices = document.getElementsByName('choices');

    for (var j = 0; j < answerChoices.length; j++) {       
         if (answerChoices[i].checked) {
             alert(answerChoices[i].value);
             break;
        }
     }
 }

私が言ったように、私はまだこれに非常に慣れていません。うまくいけば、それは簡単な解決策です。

ありがとう

4

3 に答える 3

3

jではなく、を使用していiます。

answerChoices[i]に置き換えるだけanswerChoices[j]です。

于 2013-04-24T19:32:27.247 に答える
1

他の人が指摘したように、ループエラーがあります。

checkAnswer();また、オプションを更新する前に行う必要があります。

次に、さらに質問があるかどうかを確認する必要があります。

if (typeof allQuestions[xNum - 1] !== "undefined") {

更新されたフィドル: http://jsfiddle.net/AU2ve/3/

于 2013-04-24T19:45:58.190 に答える
0

更新しました。インデックス i と j が混在しています。デモを試す

for (var j = 0; j < answerChoices.length; j++) {
    if (answerChoices[j].checked) {
        alert(answerChoices[j].value);
        break;
    }
}

また、レンダリング前に質問プールの長さを確認します。

if (allQuestions.length > xNum - 1) {

HTMLフォーマットにもエラーがあります:

    newHtml += '<label><input type="radio" name="choices" value="' + allQuestions[xNum - 1].choices[i] + '" />' + allQuestions[xNum - 1].choices[i] + '<label>';

お気づきのように、入力もラベルで囲みました。

<label><input type="radio" name="choices" value="David Cameron">David Cameron</label>

このようにして、名前をクリックしてラジオを選択できます。

于 2013-04-24T19:43:35.193 に答える