• ベストアンサー

if文で質問です。

 初めまして!初めてこの掲示板にきました。 今後ともよろしくお願いします。 今、研修で会議室の予約システムを作っています。 お昼休み(12~13時)を空欄にしたいのですが、 if文が解らなくて困っています。 本も見てみたのですが、載っていません。 どなたか教えてください。 書いてみた方法では、エラーになる上、欲しい物とは程遠い物が出来てしまいます。 s_timeは選択された開始時間、e_timeは選択された終了時間です。 このように作っています。 function gomon(){ if((document.form1.e_time.value - document.form1.s_time.value) > 5){ alert("利用時間は5時間までです。"); } if((document.form1.e_time.value - document.form1.s_time.value) < 6){ sanmon(); } }

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

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

質問に書かれた内容だけ見る限りは、問題はありません。 確かにフォームオブジェクトの value は「文字列」として扱われますが、減算をした時点で「数値」に変換されるので、No.1 のようにしなくても大丈夫です。 > s_timeは選択された開始時間、e_timeは選択された終了時間です。 これを読む限り、時刻はプルダウン(SELECTタグ)で選択させるようになっていると思うのですが、どうでしょうか? もしプルダウンだとすれば、選択された値は   document.form1.s_time.value ではなく、   document.form1.s_time.options[document.form1.s_time.selectedIndex].value です。 ※この方法は、OPTIONタグに value が指定されている必要があります。 ※OPTIONタグを、「<OPTION>12」のように書いている場合は、value の部分を text に変えればOKです。 また、2つ目の if文についてですが、これは else でOKです。 else は、if文の条件が成り立たなかった場合に実行される文です。   if (条件) {     成り立った時の処理   } else {     成り立たなかった時の処理   } という使い方をします。 参考URLのサイトにも解説があるので、調べてみて下さい。

参考URL:
http://tohoho.wakusei.ne.jp/js/index.htm

その他の回答 (1)

  • AKIIRA
  • ベストアンサー率38% (15/39)
回答No.1

こんにちは。 ご質問の内容ですが、if文の構文としては間違っていないのですが、比較するオブジェクトが違う型なので欲しい結果が得られないのだと思います。 この例にあるe_timeやs_timeはフォームから入力されたものだと思うのですが、このままでは文字列オブジェクトとして扱われます。引き算のところでエラーになるし、数値である5や6との比較がうまくいきません。 この場合、文字列をparseIntという関数で整数に変換する必要があります。 function gomon(){ var startTime = parseInt(document.form1.s_time.value); var endTime = parseInt(document.form1.e_time.value); if((endTime-startTime) > 5){ // エラーメッセージ } if((endTime-startTime) < 6){ sanmon(); } }

sandora
質問者

お礼

早いレス、ありがとうございます。 こんなに早く返ってくるとは思っていなかった為、 返事が遅れ、申し訳ございません。 助かりました、ありがとうございます。

関連するQ&A

  • if文の挙動が変です。何が悪いのでしょうか?

    こんにちは,よろしくお願いします。次のような関数を作って,条件に当てはまれば,formElemを送信するコードを書いたところ,条件を満たしていないのにもかかわらず,送信されてしまいます。それはどこが悪いのでしょうか。教えてください。 もう少し詳しく言うと,この関数は,p1とg1が変更されたとき(onchngeで)に呼び出されるようになっています。 このとき,p1が先に変更され(条件1)を満たしtrueになり,その後で,g1が変更され(条件2)がtrueになったときは,正常に機能します。alert("yes-submit");も表示され,formの送信も実行されます。 しかし,この逆で,g1が先に変更され(条件2)を満たしtrueになった時に,formが送信されてしまうのです。(条件1)が満たされていないのにもかかわらずです。気づかないうちに,条件を満たしていることもあるのかと思って,alert("yes-submit");を追加しました。しかし,そのalert("yes-submit");は表示されません。つまり,最後のif文がyesの時に実行されるブロックを通過していないのにもかかわらず,formの送信のみが行われてしまうのです。(true)&&(false)でyesにはなりませんよね。これって,変ですよね。いったいなぜ,このような挙動を示すのでしょうか?お願いします。教えてください。 function SchlSlct(){ var formElem = document.getElementById("form1"); if(document.getElementById("p1").selectedIndex > 0){ alert("p-yes"); }else{ alert("p-no"); } //以上(条件1) if(document.getElementById("g1").value != ""){ alert("g-yes"); }else{ alert("g-no"); } //以上(条件2) if((document.getElementById("p1").selectedIndex > 0) && (document.getElementById("g1").value != "")){ alert("yes-submit"); formElem.submit(); } //以上((条件1)&&(条件2)) }

  • validateForm firefoxでalertが表示されません

    java scriptについて質問です。 ホームページ内のプルダウンメニューで、項目が選択されていない状態で「submit」ボタンが押された場合、「~を選択してください」というメッセージを表示させたいと思います。 そこで以下のようなfunction validateFormを書いたのですが、alertがIEでは表示されるのにfirefoxでは表示されません。 function validateForm() { if (document.form1.Prop1.options.value == 'Error') { alert('Please select aaa.') document.form1.Prop1.focus() return false } if (document.form1.Prop2.options.value == 'Error') { alert('Please select bbb.') document.form1.Prop2.focus() return false } if (document.form1.Prop3.options.value == 'Error') { alert('Please select ccc.') document.form1.Prop3.focus() return false } if (document.form1.Prop4.options.value == 'Error') { alert('Please select ddd.') document.form1.Prop4.focus() return false } if (document.form1.Prop5.options.value == 'Error') { alert('Please select eee.') document.form1.Prop5.focus() return false } } firefoxでもalertを表示させるには、どのようにすればいいでしょうか? 教えてくださいませ。よろしくお願いします。

  • If文を2つ並べると2つ目の文が実行されない。

    プログラムの中で*A*のIf文は実行されますが、*B*のIf文は実行されません。 何故でしょうか?教えて下さい。 ちなみに、<中略>の部分にもIf文は同じ様にあります。(内容は違うけど) <SCRIPT language="javascript"><!-- function ka() { ******<中略>****** *A* if (document.fomu.email.value ==""){        alert ("メールアドレスを記入して下さい。");        fomu.email.focus();        return false; } *B* if (document.fomu.email.value.match(/\w+@\w+/){        alert ("正しくメールアドレスを記入して下さい。");        fomu.email.focus();        return false; } ******<中略>******* } //--></SCRIPT>

  • if文について

    if文を利用してリストの表示をしようとしています。 ドロップダウンリストは <SELECT name="type"> <OPTION value="all">指定しない </OPTION> <OPTION value="1">タイプA系列</OPTION> <OPTION value="2">タイプB系列</OPTION> となっています。 データはチェックボックスで1か空白で保存されていて、A系列は「s_1」「s_2」、B系列は「s_3」「s_4」「s_5」にチェックが入っているかどうかを振り分けしたいんです。 なので、ドロップダウンリストで「タイプA系列」を選択したら「s_1」「s_2」に1が入っている物のみ表示するというものです。 現在のところこの形です。 if ($FORM{'type'} ne 'all') { if ($FORM{'type'} eq '1'){ if ($s_7 || $s_8 eq 1) { ; } else { next; } }else{ if ($s_9 || $s_10 || $s_11 eq 1) { ; } else { next; } } } このようにやってみましたが全部表示されてしまいます。 どのように直したらOKでしょうか? お願いします。

    • ベストアンサー
    • Perl
  • javaScriptのif文について…

    以下のようなプログラムを作成しました。作ったのはサンプルで、本当に作りたいのはもっと条件が多いのを作りたいのですが、かなりifの羅列となってしまいます。他に何か良い方法はありませんか?教えてくださいm(__)M <html> <script type="text/javascript"> function hoge(){ var v1=document.getElementById('s1').value; var v2=document.getElementById('s2').value; var rslt; if (v1==1 && v2==1) { rslt=36; } else { if (v1==1 && v2==2) { rslt=29; } else { if (v1==1 && v2==3) { rslt=22; } else { if (v1==1 && v2==4) { rslt=14; } else { if (v1==1 && v2==5) { rslt=7; } else { if (v1==1 && v2==6) { rslt=0; } else { rslt='?'; }} document.getElementById('txt').value=rslt; } </script> <body> <select id="s1" onChange="hoge()"> <option value="1">1 <option value="2">2 <option value="3">3 <option value="4">4 </select>   <select id="s2" onChange="hoge()"> <option value="1">1 <option value="2">2 <option value="3">3 <option value="4">4 <option value="5">5 <option value="6">6 </select><p> <input type="text" id="txt" value=""> </body> </html>

  • このif構文の間違いを教えて下さい。

    どうぞ宜しくお願いします。 *onsubmitでアラートを出力するようにしています。 if条件も"||"でひとまとめにもしてみましたが上手くいきませんでした。 ########################################## print "<SCRIPT LANGUAGE=\"JavaScript\">\n"; print "<!--\n"; print "function FldChk(){\n"; print " if( document.MyForm.name.value == '' ){\n"; print " alert('名前\、E\-mail\、選択項目は必須入力です ');\n"; print " return false;\n"; print " }\n"; print " if( document.MyForm.email.value == '' ){\n"; print " alert('名前\、E\-mail\、選択項目は必須入力です ');\n"; print " return false;\n"; print " }\n"; print " if( document.MyForm.comment.value == 'noting' ){\n"; print " alert('名前\、E\-mail\、選択項目は必須入力です ');\n"; print " return false;\n"; print " }\n"; print " else{\n"; print " alert('O\Kを押して10\秒\後に申\込が完\了します。有\難う御\座いました\♪ ');\n"; print " return true;\n"; print " }\n"; print "}\n"; print "// -->\n"; print "</SCRIPT>\n"; #############################################

  • チェックボックスの選択チェック

    ラジオボタンの選択チェック、セレクトボタンの選択チェックのあとにチェックボックスの選択チェックをしたいのですが、どのように入れればよいのでしょうか。教えてください。 ↓参考までに↓ function check() { var flag=0; if( document.form1.seibetu.length){ flag=1; var i; for(i=0; i<document.form1.seibetu.length; i++) if(document.form1.seibetu[i].checked)flag=false; } if(flag){ alert('性別が選択されていません'); return false; } if(document.form1.nenrei.value=="")flag=true; if(flag){ alert('年齢が選択されていません'); return false; } if( document.form1.Q1.length){ flag=1; var i; for(var i=0; i<document.form1.Q1.length; i++) if(document.form1.Q1[i].checked)flag=false; if(flag){ alert('Q1が選択されていません'); return false; } else {★★★ここに入れたい★★★   ;} } }

  • function validateFormについて

    ショッピングサイトを制作しているWebデザイナーです。Java Scriptのfunction validateFormについて質問です。 商品をショッピングカートに入れる際、FormのsubmitでサーバーのASPにデータを受け渡す仕組みで、ユーザーがsubmitボタンをクリックした際、商品の選択項目(select)が選択されていないとエラーメッセージが出るようにしています。 選択項目(select name)は「Color」と「Size」とありますが、現在、エラーメッセージ用のJava Scriptを、 「ColorとSize両方チェック」 function validateForm() { //--------------------------------------------------- if (document.form1.Size.options.value == 'Error') { alert('Please select Size !') document.form1.Size.focus() return false } if (document.form1.Color.options.value == 'Error') { alert('Please select Color !') document.form1.Color.focus() return false } } 「Colorのみチェック」 function validateForm() { //--------------------------------------------------- if (document.form1.Color.options.value == 'Error') { alert('Please select Color !') document.form1.Color.focus() return false } } と2つ使い分けています。 この2つをひとつのファイル(.js)にまとめることはできますか?また、今後また新たな選択項目が出てきた時、ファイル(.js)を増やすのではなく、scriptの中身を追加して対応させていきたいのですが、そうするにはjava scriptをどのように記述すればいいでしょうか? 分かる方、教えてください。 よろしくお願いします。

  • if文についてです

    アンケート入力の際、if文で5ヵ所のうちひとつでも空欄の場合「未記入です」と表示させたいのですが、下記のプログラミングでは半角数字でアンケート欄に入力すると上手くいくのですが日本語でアンケート欄に入力すると未記入のエラーがでます。原因はなぜなのでしょうか? (cgiファイルの一部分です) if($name == "" or $address == "" or $day == "" or $month == "" or $year == "" ){ $error1 ="未記入項目があります"; &Error; exit; } exit; sub Error{ print<<FORM; <html> <head> <title>空欄エラー</title> </head> <body> $error1 <form action="okweb.cgi"> <input type="submit" value="戻 る"> </form> </body> </html> FORM }

    • ベストアンサー
    • Perl
  • ラジオボタンとセレクトボックスの選択チェック

    ラジオボタン、セレクトボタンの選択チェックをしたいのですが 同時にチェックする場合どうすればよいのでしょうか。 失敗策ですが、参考までに↓ function check() { var flag=0; if( document.form1.seibetu.length){ flag=1; var i; for(i=0; i<document.form1.seibetu.length; i++){ if(document.form1.seibetu[i].checked){ flag=0; break; } } } else{ if(!document.form1.seibetu.checked){ flag=1; } } if(flag){ window.alert('性別が選択されていません'); return false; } else{ return true; } if(document.form1.nenrei.options[document.form1.nenrei.selectedIndex]. value==""){ flag=1; } if(flag){ window.alert('年齢が選択されていません'); return false; } else{return true; } }

専門家に質問してみよう