人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

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

よろしくお願いします。

●質問者: amazontannken
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:JavaScript 入力 更新
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● dungeon-master
●70ポイント

こんな感じかと。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>
◎質問者からの返答

ありがとうございます。

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

00:00 - 00:00

の形式でお願いします。


2 ● dungeon-master
●70ポイント ベストアンサー

時分だけなら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>
◎質問者からの返答

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ