javascript で選択問題のクイズを作成しています。

ボタンをおした時の処理で教えてください。

function button_clickHandler(e) {
var ch = e.target.innerHTML; // 押されたボタンの文字をCHに入れる
var tmp = ch; //押されたボタンの文字を表示

// 答えがが正しいかどうか判定する
if (tmp == kotae) {
//ここに正解の時、ボタンに色をつけたり音を出したりする処理を入れる
start(); //ここで、次の問題へ進む
}
else{
//もし、不正解のボタンを押した場合、ボタンに色をつけたり、不正解の音をだす処理を入れる
}


}

**************
↑のスクリプトだと、選択肢のボタンをおしたとき、もし答えが間違ったら、間違いの音をだした後、正解のボタンを押すまで画面が一旦停止して、正解のボタンを押したら次に進むので問題ないのですが、もし、1回目で、正解だった場合、同様に正解の音をだしたあと、即座に次の問題に進んでしまいます。
正解だった場合も、一度、画面を停止させたいのですが、どうしたらいいのでしょうか?
再度正解ボタンを押してから、次の問題へ進む(start()を実行)ようにするのはどうしたらいいのでしょうか?

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2015/10/06 11:05:03

ベストアンサー

id:a-kuma3 No.2

回答回数4974ベストアンサー獲得回数2154

「もう一度正解のボタンを押さないと、次に進まない」という仕様の是非は置いておいて、質問に書かれていることをやりたければ、回答おボタンが押されたことをどこかに覚えておく必要があります。
例えば、変数に覚えておくとしたら、こんな感じ。

var already_clicked = false;        // ★ボタンが押されたことを覚えておく変数

function button_clickHandler(e) {
    var ch = e.target.innerHTML; // 押されたボタンの文字をCHに入れる
    var tmp = ch; //押されたボタンの文字を表示

    // 答えがが正しいかどうか判定する
    if (tmp == kotae) {
        //ここに正解の時、ボタンに色をつけたり音を出したりする処理を入れる

        // ★一度、ボタンが押されていたら、次の問題へ進む
        if (already_clicked) {
            start(); //ここで、次の問題へ進む
        }
    }
    else{
        //もし、不正解のボタンを押した場合、ボタンに色をつけたり、不正解の音をだす処理を入れる
    }

    // ★ボタンが押されたことを覚えておく
    already_clicked = true;
}
id:kajironpu

ありがとうございます。フラグを立てる方法があったんですね。
なるほど、おかげさまでうまくできそうです。
ありがとうございました。

2015/09/29 14:20:26

その他の回答1件)

id:pogpi No.1

回答回数428ベストアンサー獲得回数59

最初は非表示で、押すと次に進むボタンを表示させるといいかも知れません。
stlyeのvisibility:hiddenをvisibleにして、onclickでstartを呼ぶようにするといいでしょう。

他1件のコメントを見る
id:pogpi

一回で正解しなかった時(何回か間違えて、正解した時)に、すぐに次に進むのはいいんですね。
間違えた時に、正解がどれか分かるように表示はするのでしょうか。
そうでないとすると、すぐに次に進んではいけないのではないかと思います。

2015/09/29 15:45:09
id:kajironpu

いろいろありがとうございます。
結局、選択肢のボタンを押した時に、ボタンを押した回数をカウントさせておいて、
正解のボタンを押した回数が1より大きいときだけ、次の問題に進むというIF 文を入れたら
その条件がそろうまで、うまく選択肢のところで停止してくれました。
ありがとうございました。

2015/09/29 21:51:59
id:a-kuma3 No.2

回答回数4974ベストアンサー獲得回数2154ここでベストアンサー

「もう一度正解のボタンを押さないと、次に進まない」という仕様の是非は置いておいて、質問に書かれていることをやりたければ、回答おボタンが押されたことをどこかに覚えておく必要があります。
例えば、変数に覚えておくとしたら、こんな感じ。

var already_clicked = false;        // ★ボタンが押されたことを覚えておく変数

function button_clickHandler(e) {
    var ch = e.target.innerHTML; // 押されたボタンの文字をCHに入れる
    var tmp = ch; //押されたボタンの文字を表示

    // 答えがが正しいかどうか判定する
    if (tmp == kotae) {
        //ここに正解の時、ボタンに色をつけたり音を出したりする処理を入れる

        // ★一度、ボタンが押されていたら、次の問題へ進む
        if (already_clicked) {
            start(); //ここで、次の問題へ進む
        }
    }
    else{
        //もし、不正解のボタンを押した場合、ボタンに色をつけたり、不正解の音をだす処理を入れる
    }

    // ★ボタンが押されたことを覚えておく
    already_clicked = true;
}
id:kajironpu

ありがとうございます。フラグを立てる方法があったんですね。
なるほど、おかげさまでうまくできそうです。
ありがとうございました。

2015/09/29 14:20:26

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません