あなたの習慣について教えてください!!

ある期間(複数)を入力したら、その合計を表示させたいのですが、
良い方法はないでしょうか。よろしくお願いします。

サンプルはこのような感じです。
-------------------
期間1:
西暦
<input name="kikan01_01" type="text" id="kikan01_01" />年
<input name="kikan01_02" type="text" id="kikan01_02" />月
~ 西暦
<input name="kikan01_03" type="text" id="kikan01_03" />年
<input name="kikan01_04" type="text" id="kikan01_04" />月

期間2:
....

期間3
....

合計年数
<input name="nensuu" type="text" id="nensuu" />年
<input name="kagetsu" type="text" id="kagetsu" />ヶ月

A 回答 (2件)

よくわからないけど…


そのまま計算するのでは、まずいのかしら?

とりあえず、プリミティブな計算例
(入力値のチェックは適当なので、そっくり入替えてください)
<html>
<script type="text/javascript">
function hoge() {
var d=[];
for (var i=1;i<5; i++){
var v=document.getElementById('kikan01_0'+i).value;
d[i-1]=(isNaN(v))?1:parseInt(v);
if (i%2==0) d[i-1] = (d[i-1]-1)%12 + 1;
}
var nen=d[2]-d[0]; var tuki=d[3]-d[1];
if (tuki<0) {nen--; tuki+=12;}
document.getElementById('nensuu').value=nen;
document.getElementById('kagetsu').value=tuki;
}
</script>
<body>
期間1:<br />
西暦
<input name="kikan01_01" type="text" id="kikan01_01" />年
<input name="kikan01_02" type="text" id="kikan01_02" />月
~ 西暦
<input name="kikan01_03" type="text" id="kikan01_03" />年
<input name="kikan01_04" type="text" id="kikan01_04" />月
<p />
<button onclick="hoge()">計 算</button><br />
合計年数
<input name="nensuu" type="text" id="nensuu" />年
<input name="kagetsu" type="text" id="kagetsu" />ヶ月
</body>
</html>

意味が違ってたら失礼。

この回答への補足

ありがとうございます。下記のように意図していたことができました。
・表示例
期間1に「2000年」「1月」~「2000年」「5月」と入力

「計算」を押す

合計年数に「0年」「4ヶ月」と表示。

ですが、更に例えば
期間2に「1997年」「1月」~「2000年」「5月」と入力

「計算」押す

合計年数に期間1と合わせて、「3年」「8ヶ月」と表示

このようなことも可能でしょうか?知識不足で度々申し訳ないのですが、よろしくお願いいたします。

補足日時:2009/03/18 22:10
    • good
    • 0

No1です。



>このようなことも可能でしょうか?
当然可能です。
構成が同じなら、同様の要領でできます。(←当たり前ですが…)

沢山ある場合は、それぞれのセットに識別子(=idまたはthis)を設定しておいて、これを引数にして一つのfunction内で処理するようにしてしまった方が効率的ですね。


なお、年月の計算は、最初に 「年×12+月」のように月換算した一つの変数にしておいて月単位で計算し、最後に Math.floor() や %12 で年と月に戻してやるのが普通の考え方かも。

この回答への補足

いろいろ試したのですが、どうもうまくいきません。
期間2のinputにid="kikan01_05"、kikan01_06…と連番をふるだけではダメですよね??
欲を言いますと、管理上、期間2はkikan02_01…、期間3はkikan03_01…としたいのですが。
サンプルを書いていただけると助かります。

補足日時:2009/03/19 13:03
    • good
    • 0
この回答へのお礼

なんとか解決できました。ありがとうございました。

お礼日時:2009/04/02 13:29

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


おすすめ情報