レス数:4 / 状態:解決済み / No:13 / ATOM
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=" check!! ">
</form>
------------------------
こちらになると、一瞬「正解!」「不正解!」などが表示された後、すぐに消えてしまうのです。
原因をいろいろ探しましたが、どうしても分かりません。上の選択式のように表示が残るように
するには、どこをどう直せばよいのでしょうか。
中途半端な知識のため、つまづきばかりです。ご教示よろしくお願い致します。
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=" check!! ">
</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;">
<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)"」 を挿入したら、問題が解決しました。
助かりました。本当にありがとうございました。
「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 |