• ベストアンサー

javascriptでの時間計算

教えて下さい。 工数集計プログラムをMySQL、PHP、javascriptを用いて開発しようと していますが、その中で、時間の計算をなんとかjavascriptで自動的 に計算させようと考えています。 1日データとして複数行(いくつかの工数)存在して、それぞれの行 で時間をプルダウン化し、選択されると同時に合計値が計算されるよう な事を考えています。 selectイベントか何かで取得し、計算させようかと考えていますが、 何か参考になるようなサンプルはないでしょうか。。 よろしくお願いします。

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

  • ベストアンサー
  • hkd9001
  • ベストアンサー率48% (99/204)
回答No.1

こんばんは。 ↓↓ こんなので、どぉです?? -------------------------------------------- <html> <body> <SCRIPT LANGUAGE="JavaScript"> function timecalc() { h1 = parseInt(document.frm.pro1h.value); m1 = parseInt(document.frm.pro1m.value); h2 = parseInt(document.frm.pro2h.value); m2 = parseInt(document.frm.pro2m.value); minute = h1 * 60 + m1 + h2*60 + m2; hr = Math.floor(minute / 60); mina = minute - hr * 60; alert(hr + "時間" + mina + "分"); } </SCRIPT> <form name="frm"> 工程1: <select name="pro1h" onChange="timecalc()"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select>時間 <select name="pro1m" onChange="timecalc()"> <option value="00">00</option> <option value="10">10</option> <option value="20">20</option> <option value="30">30</option> <option value="40">40</option> <option value="50">50</option> </select>分 <br><br> 工程2: <select name="pro2h" onChange="timecalc()"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select>時間 <select name="pro2m" onChange="timecalc()"> <option value="00">00</option> <option value="10">10</option> <option value="20">20</option> <option value="30">30</option> <option value="40">40</option> <option value="50">50</option> </select>分 <br><br> </form> </body> </html> -------------------------------------------- 即席でザザザザッと作ってしまったので、不備あるかもしれません(PC上では動作確認すみ)。ご質問、大歓迎です!

SANA_999
質問者

補足

ありがとうございます。 大変参考になります。 もう1点だけ教えて下さい。 工程が複数存在する為、それを表示させる為にループでまわし ながら表示させています。 その際に、教えて頂いたような個々のSELECTに名称が付ける事 ができず、名称自体も変数になってしまいます。 そのような場合の記述の仕方を教えて頂きたいと思います。 よろしくお願いします。

その他の回答 (2)

  • hkd9001
  • ベストアンサー率48% (99/204)
回答No.3

レスありがとうございます~ さて、もし私のカン違いだったら平にご容赦(!)。おたずねの「引数」が、JavaScript の関数「timecalc()」をコールするときの引数という意味であれば、これは不要ということになります。その理由は、どのプルダウンの値が変更されても「すべてのプルダウンの現在の値を引っ張ってきて再計算させる」ということに変わりはないからです。これに対して、どのプルダウンが変更されたかによって timecalc() の動作が変わってくるのであれば、timecalc(x) のように引数が必要となってきますね~。 もし、私の解釈が違っていたら、申し訳ないですが補足をお願いいたしますです~ あと、引き続き 追加のご質問も歓迎ですよ。

SANA_999
質問者

お礼

ようやく理解する事ができました。 細かなご指導ありがとうございました。

  • hkd9001
  • ベストアンサー率48% (99/204)
回答No.2

レスありがとうございました。 いやいや、一点だけなどとおっしゃらず何点でもお尋ねくださいまし~[笑]。 さて、おたずねの件ですが… まず、JavaScript 側の ----------------------------------------------------- h1 = parseInt(document.frm.pro1h.value); m1 = parseInt(document.frm.pro1m.value); ----------------------------------------------------- というのがありますが、これをPHPで出力するのがよいでしょう。 すなわち print "h".$i." = parseInt(document.frm.pro".$i."h.value);"; print "m".$i." = parseInt(document.frm.pro".$i."m.value);"; としておいて、$i の値を for 文などで まわせば、必要個数の h1,1m,h2,m2… を得る式が生成できます。 あと、その下の ----------------------------------------------------- minute = h1 * 60 + m1 + h2*60 + m2; ----------------------------------------------------- も、PHPで動的に生成すれば、minute の値を得ることができます。 次は、html 側です。 ----------------------------------------------------- <select name="pro1h" onChange="timecalc()"> <select name="pro1m" onChange="timecalc()"> ----------------------------------------------------- これも、PHPで出力できます: print "<select name='pro".$i."h' onChange='timecalc()'>"; print "<select name='pro".$i."m' onChange='timecalc()'>"; …というようなことを参考に、やってみて頂けますか? もしご不明の点があれば、追加のご質問大歓迎です~。

SANA_999
質問者

補足

ありがとうございます。 お言葉に甘えて質問させて頂きます。 print "<select name='pro".$i."h' onChange='timecalc()'>"; print "<select name='pro".$i."m' onChange='timecalc()'>"; html側での処理で、ここでは引数として何か渡さなくても良いので しょうか。。。 教えて下さい。

関連するQ&A