• ベストアンサー

if をいくつか重ねたら実行してくれません

function incheckの中に、5つほどifを重ねてみました。条件に合わないとアラーとをだします。選択はラジオボタンで行っています。 条件に合わないと各々それに応じたアラートがでるところまではなんとか出来ましたが、 2回目に選択しなおして、かつそれが再度すべての条件にあっていないにもかかわらず、OKとされてしまいます。 一度ひとつのif条件にあったことをしてしまうと、そのif条件は2度目からチェックしてくれません。 どうすれば、つどつど全部のif条件をチェックしてくれるでしょうか? 尚、こちらにタグを貼ろうとしたら、質問の欄は文字制限があるようで、ちょっとオーバーしてしまいました。 どなたかが回答してくださったら、すぐに補足欄にはらさせていただきます。 あいまいな質問で申し訳ないのですが、どなたかよろしくご指導願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • madman
  • ベストアンサー率24% (612/2465)
回答No.2

ひとつづつ必ず選んで、順位付けをするようにするのでしょうか。 それで、一度りんごを1位にして、みかんを1位に選びなおすとりんごの未チェックが判定できない。ということでしょうか。 これは、チェックが外れたときにfalseにならないせいですね。 それだと、このようにしてはいかがですか。 ---- <p>りんご <input type="radio" name="R1" value="りんご" onclick="f11=true,f12=false,f13=false"> <input type="radio" name="R2" value="りんご" onclick="f21=true,f22=false,f23=false"> <input type="radio" name="R3" value="りんご" onclick="f31=true,f32=false,f33=false"></p> <p>みかん <input type="radio" name="R1" value="みかん" onclick="f11=false,f12=true,f13=false"> <input type="radio" name="R2" value="みかん" onclick="f21=false,f22=true,f23=false"> <input type="radio" name="R3" value="みかん" onclick="f31=false,f32=true,f33=false"> </p> <p>いちご <input type="radio" name="R1" value="いちご" onclick="f11=false,f12=false,f13=true"> <input type="radio" name="R2" value="いちご" onclick="f21=false,f22=false,f23=true"> <input type="radio" name="R3" value="いちご" onclick="f31=false,f32=false,f33=true"> </p> --- 他のラジオボタンが押されたときに、その他のフラグ情報をfalseにします。 もっとスマートな方法があるかもしれませんが、とりあえずお試しください。

yukiko5
質問者

お礼

でけました。ありがとうございました。 とてもわかりやすかったです。 遅い時間にすばやく対応頂きまして助かりました。 ありがとうございました。

yukiko5
質問者

補足

>ひとつづつ必ず選んで、順位付けをするようにするのでしょうか。 >それで、一度りんごを1位にして、みかんを1位に選びなおすとりんごの未チェック>が判定できない。ということでしょうか。 そうです。まさにそうです。 >これは、チェックが外れたときにfalseにならないせいですね。 そうか!そうすればいいのかー。 >それだと、このようにしてはいかがですか。 はい、さっそくやってみたいのですが、退社時間がきてしまいました。 自宅に帰ってから、再度挑戦いたします。 ひょっとしたらお礼が月曜になってしまうかもしれませんが、 申し訳ないのですが、少々お待ちくださいませ。 本当にありがとうございました。やってみまーす!

その他の回答 (2)

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.3

チェックが外れた時に、変数をfalseにしてないのが原因、というのは madman さんの回答の通りですね。 ラジオボタン1個ごとに変数を作って真偽値で判断されてますが、1位は今何で、2位は何で、ということを管理した方が、プログラムがすっきりしますよ。 以下、参考程度に # スクリプト部 <SCRIPT><!-- f1 = f2 = f3 = 0; RINGO = 1; MIKAN = 2; ITIGO = 3; // 入力ミスの判別 function incheck() {   var err = '';   err += fcheck(RINGO, "りんご", err);   err += fcheck(MIKAN, "みかん", err);   err += fcheck(ITIGO, "いちご", err);   if (err) {     alert(err + "が選択されていません。");     return false;   }   return true; } // くだものの選択チェック function fcheck(code, name, err) {   if (f1 != code && f2 != code && f3 != code)     return (err ? 'と' : '') + name;   return ''; } //--></SCRIPT> # BODY部 <P>  りんご  <INPUT type="radio" name="R1" value="りんご" onclick="f1=RINGO">  <INPUT type="radio" name="R2" value="りんご" onclick="f2=RINGO">  <INPUT type="radio" name="R3" value="りんご" onclick="f3=RINGO"> </P> <P>  みかん  <INPUT type="radio" name="R1" value="みかん" onclick="f1=MIKAN">  <INPUT type="radio" name="R2" value="みかん" onclick="f2=MIKAN">  <INPUT type="radio" name="R3" value="みかん" onclick="f3=MIKAN"> </P> <P>  いちご  <INPUT type="radio" name="R1" value="いちご" onclick="f1=ITIGO">  <INPUT type="radio" name="R2" value="いちご" onclick="f2=ITIGO">  <INPUT type="radio" name="R3" value="いちご" onclick="f3=ITIGO"> </P> ちなみに、送信ボタンの onClick での入力チェックは不要です。 送信ボタンを押しても、FORM の onSubmit が動いて、チェックをしてくれます。

yukiko5
質問者

お礼

ありがとうございました。 せっかく私にあったJavaさんを書いていただいたのですが、 まだJavaを始めて1週間の私にはちょっと難しかったです。 今回はmadmanさんの方を参考にさせていただきますが、 今後の課題としてleazさんのがわかるようになりたいです。 ありがとうございました

  • madman
  • ベストアンサー率24% (612/2465)
回答No.1

回答できるかわかりませんが、とりあえずソースを見せてください。

yukiko5
質問者

補足

<script language="JavaScript"> <!-- f11=false; f21=false; f31=false; f12=false; f22=false; f32=false; f13=false; f23=false; f33=false; //入力ミスの判別 function incheck() { if (f11==false && f21==false && f31==false){ window.alert("りんごが選ばれていません"); return false;}    if (f12==false && f22==false && f32==false){ window.alert("みかんが選ばれていません"); return false;} if (f13==false && f23==false && f33==false){ window.alert("いちごが選ばれていません"); return false;} } //---> </script> <form action="http://www.altoworld.com/form2/post.cgi" method="POST" onsubmit="return incheck();"> <p>りんご<input type="radio" name="R1" value="りんご" onclick="f11=true"> <input type="radio" name="R2" value="りんご" onclick="f21=true"> <input type="radio" name="R3" value="りんご" onclick="f31=true"></p> <p>みかん<input type="radio" name="R1" value="みかん" onclick="f12=true"> <input type="radio" name="R2" value="みかん" onclick="f22=true"> <input type="radio" name="R3" value="みかん" onclick="f32=true"></p> <p>いちご<input type="radio" name="R1" value="いちご" onclick="f13=true"> <input type="radio" name="R2" value="いちご" onclick="f23=true"> <input type="radio" name="R3" value="いちご" onclick="f33=true"></p> <p>左から順に1位・2位・3位と考えてください。</p> <p><input type="submit" name="B1" value="送信"  onclick="return incheck()"> </p> </form> こんなのです。よろしくおねがいします。。。。(ちゃんと動くかな???)

関連するQ&A