2つのフォームに時間を入力して、


入力した瞬間(JavaScriptのonChangeを使用)に
その2つの時間の差を求めて

3つめのフォームに値を出力したいのですが、

それをページの更新なしで、JavaScriptでやりたいと
思っています。

よろしくお願いします。

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2006/05/12 22:59:06
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:dungeon-master No.2

回答回数571ベストアンサー獲得回数40

ポイント70pt

時分だけならDateを使う必要はありません。

入力されたそれぞれの値について時と分に分離し、時*60+分を計算して差分を取ります。

その結果を60で割った商が時、余が分になります。


サンプルは入力値のチェックをしていません。

例えば 0:22321 と 0:0 を与えると、372時間 1分 と計算します。

<html>
<head>
<script language="Javascript">
function calc(){
  k1= FF.D1.value+":";
  k2= FF.D2.value+":";
  s1=k1.split(":");
  s2=k2.split(":");
  v1= 60*parseInt(s1[0])+parseInt(s1[1]);
  v2= 60*parseInt(s2[0])+parseInt(s2[1]);
  sabun=Math.abs( v1-v2 )
  xhh=Math.floor( sabun/60 );
  xmm=sabun%60 ;
  FF.RS.value= ""+xhh+"時間 "+xmm+"分"
}
</script>
</head>
<BODY>
<form name="FF">
<input type=text name="D1" onChange="calc();">
<input type=text name="D2" onChange="calc();">
<BR>
差<input type=text name="RS">
</form>
</BODY></HTML>
id:amazontannken

どうもありがとうございました。

忙しかったので助かりました。

2006/05/12 22:57:22

その他の回答1件)

id:dungeon-master No.1

回答回数571ベストアンサー獲得回数40

ポイント70pt

こんな感じかと。HTML自体はかなり適当。

1970/01/01 00:00からの経過ミリ秒は、Date.parseで

文字列"2006/05/12 18:00"形式から直接持ってきています。

あとは差分の絶対値(わかりやすいように秒単位で)を作り、

日数,時,分を求めます。

各所の計算を整数で行う必要があります。

時間のHH:MMフォーマットはちょっと強引かも。

<html>
<head>
<script language="Javascript">
function calc(){
  sabun=Math.floor(Math.abs(Date.parse(FF.D1.value)-Date.parse(FF.D2.value))/1000);
  p=60*60*24
  xdate=Math.floor( sabun/p);
  sabun -= xdate*p
  p/=24;
  xhh=Math.floor( sabun/p );
  sabun -= xhh*p
  p/=60;
  xmm=Math.floor( sabun/p );
  xtime= 10000+xhh*100 + xmm;
  stime= ""+xtime
  FF.RS.value= ""+xdate+"日"+stime.substr(1,2)+":"+stime.substr(3,2)
}
</script>
</head>
<BODY>
<form name="FF">
<input type=text name="D1" onChange="calc();">
<input type=text name="D2" onChange="calc();">
<BR>
差<input type=text name="RS">
</form>
</BODY></HTML>
id:amazontannken

ありがとうございます。

日数は要らないということをいい忘れてました。

00:00 - 00:00

の形式でお願いします。

2006/05/12 18:48:53
id:dungeon-master No.2

回答回数571ベストアンサー獲得回数40ここでベストアンサー

ポイント70pt

時分だけならDateを使う必要はありません。

入力されたそれぞれの値について時と分に分離し、時*60+分を計算して差分を取ります。

その結果を60で割った商が時、余が分になります。


サンプルは入力値のチェックをしていません。

例えば 0:22321 と 0:0 を与えると、372時間 1分 と計算します。

<html>
<head>
<script language="Javascript">
function calc(){
  k1= FF.D1.value+":";
  k2= FF.D2.value+":";
  s1=k1.split(":");
  s2=k2.split(":");
  v1= 60*parseInt(s1[0])+parseInt(s1[1]);
  v2= 60*parseInt(s2[0])+parseInt(s2[1]);
  sabun=Math.abs( v1-v2 )
  xhh=Math.floor( sabun/60 );
  xmm=sabun%60 ;
  FF.RS.value= ""+xhh+"時間 "+xmm+"分"
}
</script>
</head>
<BODY>
<form name="FF">
<input type=text name="D1" onChange="calc();">
<input type=text name="D2" onChange="calc();">
<BR>
差<input type=text name="RS">
</form>
</BODY></HTML>
id:amazontannken

どうもありがとうございました。

忙しかったので助かりました。

2006/05/12 22:57:22

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません