電子書籍の厳選無料作品が豊富!

教えて下さい。

工数集計プログラムをMySQL、PHP、javascriptを用いて開発しようと
していますが、その中で、時間の計算をなんとかjavascriptで自動的
に計算させようと考えています。

1日データとして複数行(いくつかの工数)存在して、それぞれの行
で時間をプルダウン化し、選択されると同時に合計値が計算されるよう
な事を考えています。

selectイベントか何かで取得し、計算させようかと考えていますが、
何か参考になるようなサンプルはないでしょうか。。

よろしくお願いします。

A 回答 (3件)

こんばんは。



↓↓ こんなので、どぉです??
--------------------------------------------
<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上では動作確認すみ)。ご質問、大歓迎です!

この回答への補足

ありがとうございます。
大変参考になります。

もう1点だけ教えて下さい。

工程が複数存在する為、それを表示させる為にループでまわし
ながら表示させています。

その際に、教えて頂いたような個々のSELECTに名称が付ける事
ができず、名称自体も変数になってしまいます。

そのような場合の記述の仕方を教えて頂きたいと思います。

よろしくお願いします。

補足日時:2007/03/13 09:37
    • good
    • 0

レスありがとうございます~



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

もし、私の解釈が違っていたら、申し訳ないですが補足をお願いいたしますです~
あと、引き続き 追加のご質問も歓迎ですよ。
    • good
    • 0
この回答へのお礼

ようやく理解する事ができました。

細かなご指導ありがとうございました。

お礼日時:2007/03/13 17:30

レスありがとうございました。


いやいや、一点だけなどとおっしゃらず何点でもお尋ねくださいまし~[笑]。

さて、おたずねの件ですが…

まず、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()'>";


…というようなことを参考に、やってみて頂けますか?
もしご不明の点があれば、追加のご質問大歓迎です~。

この回答への補足

ありがとうございます。

お言葉に甘えて質問させて頂きます。

print "<select name='pro".$i."h' onChange='timecalc()'>";
print "<select name='pro".$i."m' onChange='timecalc()'>";

html側での処理で、ここでは引数として何か渡さなくても良いので
しょうか。。。

教えて下さい。

補足日時:2007/03/13 16:01
    • good
    • 0

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