問答収集 カテゴリ:JavaScriptプログラミング
現在のスレッド一覧 / 新規に質問を投稿
1 名前:おためごかし 日付:2015/03/26(木)19:06:40 ID:ywaGNaXxl4sl
こんにちは、アドバイスよろしくお願いします。
JavaScriptを用いて、
1) ランダムに音声を出す
2) 選択式 or フォームへの入力によって正誤を判断する
3) 正誤によって異なるメッセージをinnerHTMLにて表示する
という一連の作業をしたいと思っています。

1)と2)については問題ないのですが、問題は3)です。
選択式の場合は、<a>タグのついた文字列をクリックします。以下の関数において、
正誤(rとnが一致するか否か)によってcorrect、wrongそれぞれの場所に文字列を
表示します。
------------------------
 function chkans(r){
  if (r == n){
  target = document.getElementById("correct");
  target.innerHTML = "正解!";
   }else{
  target = document.getElementById("wrong");
  target.innerHTML = "不正解!";
    }
------------------------
これで、表示はうまく行きます。
フォームの入力欄を指定して文字列を入力させる場合も、同様にして以下のような関数を作りました。
------------------------
  function chkans() {
   if (document.f1.answer.value === tanbo[i]) {

  /* f1というフォームのanswerという入力欄に入った文字列が tanbo[i]で指定された文字と一致するかを判断 */

   target = document.getElementById("correct");
   target.innerHTML = "正解!";            /* 一致していればフォーム外の correct欄に「正解!」表示 */
    } else {
   target = document.getElementById("wrong");
   target.innerHTML = "不正解!";                     /* 不正解の場合はwrong欄に「不正解!」表示 */
   target = document.getElementById("wrong2");
   target.innerHTML = "正解は“" + tanbo[i] + "”";
                             /* 不正解の場合、ついでにwrong2欄に正答を表示 */
   }
  }
------------------------
------------------------
【form欄】
        <form name="f1" id="f1" onSubmit="return chkans()">
         <input type="text" size="16" name="answer" id="answer">
         <input type="submit" value="&nbsp;check!!&nbsp;">
        </form>

------------------------
こちらになると、一瞬「正解!」「不正解!」などが表示された後、すぐに消えてしまうのです。

原因をいろいろ探しましたが、どうしても分かりません。上の選択式のように表示が残るように
するには、どこをどう直せばよいのでしょうか。

中途半端な知識のため、つまづきばかりです。ご教示よろしくお願い致します。
2 日付:2015/03/27(金)00:31:03 ID:Z2fjSFchf0/1
表示がすぐに消えてしまう原因は、自身のページがリロードされているからではないでしょうか?

<form> 要素からサブミットを実行すると、別のページに遷移します。
遷移先は <form> 要素の action 属性で指定します。
action 属性を省略している場合、自身のページがリロードされます。


<form> 要素の action 属性に "javascript:void(0)" を指定すると遷移しなくなります。
<form action="javascript:void(0)">


また、<form> 要素の onsubmit イベントにて、false 値を返すとフォームの送信を中止する事ができます。
<form onsubmit="chkans(); return false;">
3 日付:2015/03/27(金)10:06:01 ID:ywaGNaXxl4sl
回答ありがとうございました。

「action="javascript:void(0)"」 を挿入したら、問題が解決しました。

助かりました。本当にありがとうございました。
4 名前:状態変更 日付:2015/03/30(月)04:20:16 ID:Z2fjSFchf0/1
この質問の状態を『解決』に変更しました。
このスレッドについて
質問の状態 :
解決済み
投稿開始日 :
2015/03/26(木)19:06:40
投稿終了日 :
2015/04/06(月)04:21:17
投稿者 :
おためごかし
レス総数 :
4
スレッド番号 :
13
MondoCollectionSystem ver.0x00020000 by Hakuhin