javascriptで、自分で答えを入力するクイズ形式の問題を作成しています。

答えをキーボードから入力して、リターンで正解と比較して判定させています。
もし、答えが不正解の時、次に進むボタンを表示させ、一旦画面を停止させているのですが、
ここで、次に進む際、ボタンクリックでは面倒なので、リターンキーで次に
進ませたいのですが、やり方がわかりません、
ボタンを表示させた時点で、ボタンクリック以外はだめでしょうか?
もし、ダメな場合、ボタンの代わりに「次に進むにはリターン」というコメントを出して、
そこでリターン判定を行う?のでしょうか。

document.getElementById("aaa").style.visibility="visible"; //ここでボタンを表示
document.getElementById("aaa").onclick = function (){
setNextGameParam() //ボタンを押したら、次の問題へ進む
start()
}

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2015/10/21 15:06:33
  • 終了:2015/10/23 11:42:16

ベストアンサー

id:a-kuma3 No.1

a-kuma3回答回数4558ベストアンサー獲得回数19032015/10/21 16:41:54

http://q.hatena.ne.jp/1444790440
これの続きで良いんですよね。

今のコードがこうなってると想定。

  function key_Press(e){

    var ret = true;
    var keycode = getKEYCODE(e);
      
    document.getElementById("keycode_check").innerHTML = keycode;
      
    if(keycode == '13'){

      if (impwd == SEIKAI) {    // 正解かどうかを判定
        document.getElementById("aaa").style.visibility="visible";  //ここでボタンを表示
        document.getElementById("aaa").onclick = function (){
          setNextGameParam();   //ボタンを押したら、次の問題へ進む
          start();
        };
      } 

    } else if(keycode == 8){
    ... 以下省略

ボタンが表示されてたら、次に進む処理を呼び出してあげれば良いです。

  function key_Press(e){
    ...

    if(keycode == '13'){

      if (impwd == SEIKAI) {    // 正解かどうかを判定
        var btn = document.getElementById("aaa");
        if (btn.style.visibility != "visible") {    // ボタンが表示されていないか?
          btn.style.visibility = "visible";
          btn.onclick = function (){
            setNextGameParam()  //ボタンを押したら、次の問題へ進む
            start()
          } 
        } else {  // 次に進むボタンが表示されてたら、リターンキーでも次の問題へ進む
          // ★
          setNextGameParam();
          start();
        }
      } 

    } else if(keycode == 8){
    ... 以下省略

次に進む処理を二度も書くのはアレなので、ボタンの click メソッドを呼ぶのでも良い。

  function key_Press(e){
    ...

    if(keycode == '13'){

      if (impwd == SEIKAI) {    // 正解かどうかを判定
        var btn = document.getElementById("aaa");
        if (btn.style.visibility != "visible") {    // ボタンが表示されていないか?
          btn.style.visibility = "visible";
          btn.onclick = function (){
            setNextGameParam();  //ボタンを押したら、次の問題へ進む
            start();
          }; 
        } else {  // 次に進むボタンが表示されてたら、リターンキーでも次の問題へ進む
          // ★
          btn.click();  // 「次に進む」ボタンをクリック
        }
      } 

    } else if(keycode == 8){
    ... 以下省略

「次に進む」ボタンが表示されていたら、正解かどうかの判定をする必要もないんじゃないか、という話もある。

  function key_Press(e){
    ...

    if(keycode == '13'){

      // ★正解判定の前にリターンキーで次に行くかどうか判定しちゃう
      // 次に進むボタンが表示されてたら、リターンキーでも次の問題へ進む
      var btn = document.getElementById("aaa");
      if (btn.style.visibility != "visible") {
        btn.click();
      }

      if (impwd == SEIKAI) {    // 正解かどうかを判定
        btn.style.visibility = "visible";
        btn.onclick = function () {
          setNextGameParam()  //ボタンを押したら、次の問題へ進む
          start()
        }; 

      }

    } else if(keycode == 8){
    ... 以下省略
他3件のコメントを見る
id:a-kuma3

その場合は、flagを立てるなどのやり方がいいのでしょうか?(例えば、正解の時だけ、フラグを立てて、そのフラグONの状態の時、なおかつリターンを押したら次に進むとか?)

それで良いと思います。

http://q.hatena.ne.jp/1443492042#a1251924
これと同じノリで、キーコードがリターンキーのときに処理をすれば良いと思います。

2015/10/22 12:01:08
id:kajironpu

ありがとうございます。
判定後に、画面の一時停止は、フラグを良く使うんですね。
何とかうまくいきました。
ありがとうございました。

2015/10/23 11:42:07

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません