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

このQ&Aに関連する最新のQ&A

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で質問しましょう!

このQ&Aと関連する良く見られている質問

Qネスケではdocument.main.日本語.valueは絶対だめ?

下記のように日本語のテキストボックスの場合、ネスケではエラーになってしまいますが、日本語のままでできる裏技はないものでしょうね・・・。

function zipsearch()
{
n = document.main.郵便番号.value;
subWin = window.open('zipsearch.cgi?zip=' + n ,"zipsearch","width=300,height=100")
}

Aベストアンサー

それ以前にNetscape以外でも日本語は使わない方がいいですよ。
ただでさえ日本語処理にはバグや妙な仕様が多いですから。

どうしても日本語を使いたいのなら、属性名ではなく、値の扱いをすればなんとかなるのではないでしょうか。
n = document.main["郵便番号"].value;
ただ、どちらにせよこのCGIにGETメソッドで渡す動作はうまくいかないと思います。
nの内容がURLエンコードされませんので。

このエンコードに関することは、ブラウザに任せるのが最良、というのが私の意見です。
JavaScriptでもescape()やencodeURI()等の一見使えそうな関数がありますが、
実は文字コードの問題でうまく動作しません。
なので、既存のフォームと異なる動作を実現する場合にはFORMを動的に生成する、等の手法が必要になります。
単にFORMを新しいページにsubmitしたいのであれば、HTMLの記述で
<FORM target="_blank ...>
とすればOKです。

Qdocument.form1.~について

クリックしたセルのidとnameを取得するものですが
document.form1.send.value = disp_area_all ;のform1を
変数に置き換えることは出来るでしょうか?

tableもFORMも沢山あってクリックした場所によって別のFORMで
idとnameを取得したいのですが。



<html>
<head>
<title></title>
<script language="JavaScript">
<!--
var disp_area = new Array();
var disp_event;
var disp_id;
var disp_name;

function check_event() {
disp_id = null;
disp_name = null;
if ( event.srcElement ) {
disp_id = event.srcElement.id;
disp_name = event.srcElement.name;
}

switch ( disp_event ) {
default:
disp_area_all = '';
disp_area[0] = 'Id:' + disp_id + ' Na:' + disp_name
disp_area_all = disp_area_all + disp_area[0] ;
document.all.send.value = disp_area_all ;
document.form1.send.value = disp_area_all ;
break;
}
}
//-->
</script>
</head>
<body>

<table border=1><tr>
<td onClick="check_event()" STYLE="width:30; height:30; background:#0000ff"
id='10' name='1'></td>
</tr></table>

<FORM method="POST" name='form1' action="">
<input type="text" size=10 name="send"><br>
<input type="submit" value="送信">
</FORM>

</body>
</html>

クリックしたセルのidとnameを取得するものですが
document.form1.send.value = disp_area_all ;のform1を
変数に置き換えることは出来るでしょうか?

tableもFORMも沢山あってクリックした場所によって別のFORMで
idとnameを取得したいのですが。



<html>
<head>
<title></title>
<script language="JavaScript">
<!--
var disp_area = new Array();
var disp_event;
var disp_id;
var disp_name;

function check_event() {
disp_id = null;
disp_name = null;
...続きを読む

Aベストアンサー

こんなモンでどうでしょ?



<html>
<head>
<title></title>
<script language="JavaScript">
<!--

var fn;
var disp_id;
var disp_na;
var disp_vl;

function chk(fn,obj) {
disp_id = null;
disp_na = null;
disp_id = obj.id;
disp_na = obj.name;
disp_vl = 'Id:' + disp_id + ' Na:' + disp_na;
document.all(fn).send.value = disp_vl ;
}
//-->
</script>
</head>
<body>

<table border="1"><tr>
<td><div id="10" name="1" onClick="chk('form1',this)" style="width:30; height:30; background:#0000ff"></div></td>
</tr></table>

<table border="1"><tr>
<td><div id="15" name="2" onClick="chk('form2',this)" style="width:30; height:30; background:#00ff00"></div></td>
</tr></table>

<table border="1"><tr>
<td><div id="20" name="3" onClick="chk('form3',this)" style="width:30; height:30; background:#ff0000"></div></td>
</tr></table>

<form method="POST" name="form1" action="">
<input type="text" size="10" name="send"><br>
<input type="submit" value="送信">
</form>

<form method="POST" name="form2" action="">
<input type="text" size="10" name="send"><br>
<input type="submit" value="送信">
</form>

<form method="POST" name="form3" action="">
<input type="text" size="10" name="send"><br>
<input type="submit" value="送信">
</form>

</body>
</html>

※取得したnameとの組み合わせから、ターゲットとなるフォーム名(fn)を
 生成するようにすれば、もっと簡単に以下のようにもできるかと。

<html>
<head>
<title></title>
<script language="JavaScript">
<!--

var fn;
var disp_id;
var disp_na;
var disp_vl;

function chk(obj) {
disp_id = null;
disp_na = null;
disp_id = obj.id;
disp_na = obj.name;
disp_vl = 'Id:' + disp_id + ' Na:' + disp_na;
fn="form" + disp_na;
document.all(fn).send.value = disp_vl;
}
//-->
</script>
</head>
<body>

<table border="1"><tr>
<td><div id="10" name="1" onClick="chk(this)" style="width:30; height:30; background:#0000ff"></div></td>
</tr></table>

<table border="1"><tr>
<td><div id="15" name="2" onClick="chk(this)" style="width:30; height:30; background:#00ff00"></div></td>
</tr></table>

<table border="1"><tr>
<td><div id="20" name="3" onClick="chk(this)" style="width:30; height:30; background:#ff0000"></div></td>
</tr></table>

<form method="POST" name="form1" action="">
<input type="text" size="10" name="send"><br>
<input type="submit" value="送信">
</form>

<form method="POST" name="form2" action="">
<input type="text" size="10" name="send"><br>
<input type="submit" value="送信">
</form>

<form method="POST" name="form3" action="">
<input type="text" size="10" name="send"><br>
<input type="submit" value="送信">
</form>

</body>
</html>

こんなモンでどうでしょ?



<html>
<head>
<title></title>
<script language="JavaScript">
<!--

var fn;
var disp_id;
var disp_na;
var disp_vl;

function chk(fn,obj) {
disp_id = null;
disp_na = null;
disp_id = obj.id;
disp_na = obj.name;
disp_vl = 'Id:' + disp_id + ' Na:' + disp_na;
document.all(fn).send.value = disp_vl ;
}
//-->
</script>
</head>
<body>

<table border="1"><tr>
<td><div id="10" name="1" onClick="chk('form1',this)" style="width:30...続きを読む

Qif(document.all && navigator.appVersion.indexOf('Mac')!=-1)returnの意味

よろしくお願いします。
JavaScriptの勉強をしているのですが、参考にしている書籍に以下の構文が出てきまして、それの意味が分からなくて悩んでいます。

//MacIE4,5バグ 回避
if(document.all && navigator.appVersion.indexOf('Mac')!=-1)return

//以降に記してあるとおり、OSがMacintoshだった場合に何らかの処置を行うプログラムなのは分かるのですが・・。
navigator.appVersion.indexOf('Mac')!=-1の部分は、「navigator.appVersion.indexOf('Mac')が1ではなかったら、Macユーザーであるということ、で、falseが返されるのでしょうか?
しかし、そもそもnavigatorオブジェクトはブラウザの種類のことではないのか?と混乱してしまっています。
また、document.allがどのような役割を果たしているのかも分かりません。なぜここでdocument.allが出てくるのでしょうか?

どなたか分かる方いらっしゃいましたら、ご教授宜しくお願いします。

よろしくお願いします。
JavaScriptの勉強をしているのですが、参考にしている書籍に以下の構文が出てきまして、それの意味が分からなくて悩んでいます。

//MacIE4,5バグ 回避
if(document.all && navigator.appVersion.indexOf('Mac')!=-1)return

//以降に記してあるとおり、OSがMacintoshだった場合に何らかの処置を行うプログラムなのは分かるのですが・・。
navigator.appVersion.indexOf('Mac')!=-1の部分は、「navigator.appVersion.indexOf('Mac')が1ではなかったら、Macユーザーであるということ...続きを読む

Aベストアンサー

「document.all」は昔はIEにだけ存在するオブジェクトだったのでIEであるかどうかの判定に使われました。

今ではOperaやNetscape等でもIEへの互換の為に存在するのでIEかどうかの判定に使われる事は減ってきています。
IEであるかどうかの判定ではなく、純粋にdocument.allが在る(使える)かという判定にはもちろん使用されますが。

「navigator.appVersion」は確かにブラウザの種類なんですが、実際にはOS名も含まれていたりすのでOSの判定にも使われたりします。

また、 != -1 というのは indexOf関数の結果が 0~なら文字列が見つかったという意味(真偽ではなく、見つかった位置を返す関数)になるのでこういう比較式を使用しています。
(1でなかったらMacユーザという解釈はちょっと違います。)

参考URL:http://www.openspc2.org/JavaScript/ref/

Qdocument.writeをinput type="text"の value値に

超初心者です。
下記の式にてPHPよりjavascriptにてHTMLに書き出しできましたが
<script type="text/javascript" src="./jsphptest.php?long=3" ></script>この値をHTMLのinput type="text"の value値にデフォルトとして入れたいと思っていますが、どうすればできるのか分かりません。できればボタン等を介さずページをロードすればこPHPからjavascriptのdocument.write値がvalue値に入って欲しいと思っています。簡単なようで難しいことなのでしょうか?どうかご教授よろしくお願いいたします。

Aベストアンサー

それからどうでもいいけど
htmlのタグの順番が適当ですね。

QJavaScriptで【window.google={kHL:"ja"};】という記述はどういう意味?

JavaScriptで【window.google={kHL:"ja"};】という記述はどういう意味?


YOUTUBE日本語版
http://jp.youtube.com/
のHTMLソースを見ていたら、



<script type="text/javascript">
    window.google={kHL:"ja"};
</script>


という記述を目にしたのですがこれはどういう意味あいというか目的のものなのでしょうか?


教えていただければ幸いです。

Aベストアンサー

これは、window.googleに'kHL'というキー(値は'ja')を持つ連想配列を
作成しています。

JavaScriptでの連想配列は

var 変数名 = {
キー : '値',
キー : '値',
:,
キー : '値'
};

というような感じで作成します。
キーはダブルクォートまたはシングルクォートで囲まなくても
いいようです。

参考URL:http://javascriptist.net/docs/basic_hash.html,http://www.openspc2.org/JavaScript/kouza2007/array/hash/index.html


人気Q&Aランキング

おすすめ情報