プロが教えるわが家の防犯対策術!

 初めまして!初めてこの掲示板にきました。
今後ともよろしくお願いします。
今、研修で会議室の予約システムを作っています。
お昼休み(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();
}
}

A 回答 (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
    • good
    • 0

こんにちは。



ご質問の内容ですが、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();
}
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/02/28 01:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!