1

ユーザーが回答 (ラジオ ボタン) をクリックする必要がある多肢選択式の質問を作成しています。ユーザーが回答を選択する前に [回答の確認] ボタンをクリックすると、回答を選択するように求められます。これはうまくいきます。ただし、ユーザーが間違った回答を選択して [回答の確認] ボタンをクリックすると、前のプロンプトの上に適切な回答が表示されます。プロンプトの getElementById を変更して "" を表示しようとしましたが、うまくいきませんでした。どんな助けでも大歓迎です。

for (i = 0; i < len; i++) {
    if (document.Questions.Q_ans[i].checked == false) {
        document.getElementById("reply_b").innerHTML = "Select answer before continuing.";
    }
}

if (document.getElementById('answer_b').checked || document.getElementById('answer_c').checked) {
    document.getElementById("reply_a").innerHTML = incorrect;
    document.getElementById("reply_b").innerHTML = "";
}
4

3 に答える 3

0

この行はincorrect、変数として定義するか、引用符で囲む必要があるため、失敗します。

document.getElementById("reply_a").innerHTML = "incorrect"; // <-- Should be in quotes

したがって、スクリプトはその後の行を実行しません。

于 2013-01-03T16:48:51.010 に答える
0

@brian buckが言ったように、スクリプトはincorrect、定義された変数であるか、引用符で囲まれている(文字列として実行される)ステートメントの後に実行されません。あなたのスクリプトは黙って失敗し、基本的に何もしません (少なくとも、何も見えません)。

ここで私もお勧めするいくつかのこと:

  • スコープエラーを避けるために、必ずvar iループで使用してください
  • あなたの最初のループチェックは私には少し奇妙に思えます.チェックされていない(想定される)すべての可能な回答に対して、同じエラーが表示されます. 重要ではありませんが、スクリプトは 1 回ではなく毎回何かを実行します。たとえば、回答がどこかでチェックされていることを発見したときに切り替えるブール値を持ち、このブール値に応じてエラーステートメントを最後に割り当てることができます。ただし、私の「裸の」JSはその状況では少し錆びており、より良い解決策があると確信しています!
  • スクリプトの失敗について通知されていないようですが、デバッガを使用していないと思います。Web ブラウザーで JS を実行している場合は、組み込みコンソールを使用できます。それ以外の場合は、非常に役立つツールがたくさんあります。JS で遊び始めたときに髪の毛が抜けたのを覚えています。
于 2013-01-03T17:04:23.517 に答える
0

Jquery を使用し、すべての "document.getElementById('yourId')" を "$('#yourid')" に置き換えます。forvar lenループを初期化する必要があります。

js:

for (var i = 0; i < len; i++) {
    if (document.Questions.Q_ans[i].checked == false) {
        $("#reply_b").innerHTML = "Select answer before continuing.";
    }
}

if ($('#answer_b').checked || $('#answer_c').checked) {

    $("#reply_a").innerHTML = incorrect;
    $("#reply_b").innerHTML = "";      
}
于 2013-01-03T18:02:55.013 に答える