• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JavaScriptで期間を計算したい。)

JavaScriptで期間を計算する方法

このQ&Aのポイント
  • JavaScriptを使用して、複数の期間を入力し、その合計を表示する方法について教えてください。
  • 期間1から期間3までの西暦と月を入力し、合計年数とヶ月を表示する方法について教えてください。JavaScriptを使用して実現できる方法を教えてください。
  • JavaScriptのコードを使って、複数の期間を合計する方法を教えてください。期間1から期間3までの西暦と月を入力し、合計年数とヶ月を表示させる方法を知りたいです。

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

よくわからないけど… そのまま計算するのでは、まずいのかしら? とりあえず、プリミティブな計算例 (入力値のチェックは適当なので、そっくり入替えてください) <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> 意味が違ってたら失礼。

noname#258989
質問者

補足

ありがとうございます。下記のように意図していたことができました。 ・表示例 期間1に「2000年」「1月」~「2000年」「5月」と入力 ↓ 「計算」を押す ↓ 合計年数に「0年」「4ヶ月」と表示。 ですが、更に例えば 期間2に「1997年」「1月」~「2000年」「5月」と入力 ↓ 「計算」押す ↓ 合計年数に期間1と合わせて、「3年」「8ヶ月」と表示 このようなことも可能でしょうか?知識不足で度々申し訳ないのですが、よろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

No1です。 >このようなことも可能でしょうか? 当然可能です。 構成が同じなら、同様の要領でできます。(←当たり前ですが…) 沢山ある場合は、それぞれのセットに識別子(=idまたはthis)を設定しておいて、これを引数にして一つのfunction内で処理するようにしてしまった方が効率的ですね。 なお、年月の計算は、最初に 「年×12+月」のように月換算した一つの変数にしておいて月単位で計算し、最後に Math.floor() や %12 で年と月に戻してやるのが普通の考え方かも。

noname#258989
質問者

お礼

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

noname#258989
質問者

補足

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • javascriptによる計算

    テキストボックス「a1~6」の値とテキストボックス「b1~6」に入力された値を足し算してテキストボックス「c1~6」(例…c[i] = a[i] + b[i])を計算するJavaScriptを作成しているのですが、結果がundefinedになってしまい上手くいきません。どうやったら動くのかどうかご教授ください。 以下ソース↓ <script language ="JavaScript"> function plus() { var intResult = 0; for (i=1; i<=6; i++){ intResult[i] = 0; if (!isNaN(document.forms["A"].all["a"+i].value) && !isNaN(document.forms["B"].all["b"+i].value)){ intResult[i] += parseInt(document.forms["A"].all["a"+i].value); intResult[i] += parseInt(document.forms["B"].all["b"+i].value); } <table border = 1> <tr> <td> <table border = 1> <tr> <td> <form name="A"> <input type = "text" size = 5 name = "a1"></input> </td> <td> <input type = "text" size = 5 name = "a2"></input> </td> <td> <input type = "text" size = 5 name = "a3"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "a4"></input> </td> <td> <input type = "text" size = 5 name = "a5"></input> </td> <td> <input type = "text" size = 5 name = "a6"></input> </form> </td> </tr> </table> </td> <td> <table boeder = 1> <tr> <input type = "button" onClick="plus()" value = "+"></input> </tr> </table> </td> <td> <table border = 1> <tr> <td> <form name = "B"> <input type = "text" size = 5 name = "b1"></input> </td> <td> <input type = "text" size = 5 name = "b2"></input> </td> <td> <input type = "text" size = 5 name = "b3"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "b4"></input> </td> <td> <input type = "text" size = 5 name = "b5"></input> </td> <td> <input type = "text" size = 5 name = "b6"></input> </form> </td> </tr> </table> </td> </tr> </table> 答え <form name = "C"> <table border = 1> <tr> <td> <input type = "text" size = 5 name = "c1"></input> </td> <td> <input type = "text" size = 5 name = "c2"></input> </td> <td> <input type = "text" size = 5 name = "c3"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "c4"></input> </td> <td> <input type = "text" size = 5 name = "c5"></input> </td> <td> <input type = "text" size = 5 name = "c6"></input> </td> </tr> </table> </form> </body> document.C.all["c"+i].value = intResult[i]; } } </script>

  • JavaScriptで入力チェック

    ////サンプル//// <p><input type="text" value="" name="box_1" /></p> <p><input type="text" value="" name="box_2" /></p> <p><input type="text" value="" name="box_3" /></p> <p><input type="text" value="" name="box_4" /></p> Javascriptで入力チェックをして 入力がされていたらpタグとinputタグの間に「○」を表示させたいのですが どのように実装したら良いでしょうか? ・inputタグは4つだけではなくたくさんあります ・DBを使っているのでページを更新しても○が消えないようにしたいです よろしくお願いします!

  • javascript

    ある文字を入力して、文字を返すロジックですが、 ボックスを作成して入力を行いたいです。 以下のロジックだと、hogeのvalueに文字を入力すると、文字はボックスに返されますが、 valueをスペースにして、value="" htmlで画面上で、文字を入力して、submitを実行しても、文字は返されません。 文字が引き渡されたないのが原因だと思われますが、 submitでどのようにして文字を引き渡してよいか、教えて頂けないでしょうか。 宜しくお願いします。 <form id="sample"> <input type="text" id="hoge" name="hoge" value="pass" size="30"> <input type="text" id="foo" name="foo" value="" size="100"> <INPUT type="submit" value="変換"> <script language="javascript"> (function () { function test(p){var 省略 charAt(i);}return s;} var elements = document.getElementById('sample').elements; elements['foo'].value = test(elements['hoge'].value); }()); </script>

  • javascriptの計算結果をvalue=""に

    javascriptの計算結果をフォームの中のvalue=""内部に表示し、送信できるようにしたいというのが質問の趣旨です。                 記 下記の2つのファイルで、フォームから入力した数値同士の「足し算の結果」を表示できます。 (HTMLファイル下段 <p id="message"></p>の部分で表示します。) ******************************************** 【HTML】 <script language="JavaScript" type="text/javascript" src="js/culc.js"></script> <form name="f1"> <input type="text" id="text1" name="text1" size="10" maxlength="10" />+ <input type="text" id="text2" name="text2" size="10" maxlength="10" /> <input type="button" value="足す" onclick="readText()" /> </form> <p id="message"></p> ******************************************* 【JAVASCRIPT(culc.js)】 function readText() { var text1 = document.getElementById("text1"); var text2 = document.getElementById("text2"); var message = document.getElementById("message"); var str_val1 = text1.value; var str_val2 = text2.value; var sum; if (isNaN(str_val1) || str_val1 == "" || isNaN(str_val2) || str_val2 == "") { textMessage = "数値以外の文字が入っています"; } else { //sum = str_val1 + str_val2; sum = parseFloat(str_val1) + parseFloat(str_val2); textMessage = "合計は、" + sum + "です"; } message.innerHTML = textMessage; } ************************************************ 【質問】 次にこのHTMLを改造し、フォームから計算値を送信することとしました。 ************************************************ 【HTML】 <script language="JavaScript" type="text/javascript" src="js/culc.js"></script> <form name="f1"> <input type="text" id="text1" name="text1" size="10" maxlength="10" />+ <input type="text" id="text2" name="text2" size="10" maxlength="10" /> <input type="button" value="足す" onclick="readText()" /> </form> <form action="form.cgi" method="post" name="form2" id="form2"> <input type="hidden" name="plus" value="<p id="message"></p>"> <input type="button" value="送信" onClick="disableButton()" name="button1"> </form> ************************************************ 問題点 上記のように、計算結果を表示出来るはずの<p id="message"></p>を送信フォームのvalue=の直後に記載しただけなのですが、なぜか送れません。 <p id="message"></p> を独立して記載しているときは計算値をそのまま表示していたのですが、value="<p id="message"></p>"> と value= の中に記載した瞬間に単なる文字の羅列になってしまうようです。 value="<p id="message"></p>"> value='<p id="message"></p>'> value="<p id='message'></p>"> value='<p id='message'></p>'> と試してみましたが、いずれもうまきませんでした。 どのようにすれば、value="" の中に計算結果が入るか教えてください。 宜しくお願い致します。

  • 【javascript】 年齢計算

    初心者です。 イヌでもわかるjavascript講座(http://www.red.oit-net.jp/tatsuya/java/)より拝借して、年齢計算のプログラムをつくっています。 しかし、これでやると、閏年がない年でも、フツウに計算できてしまいますし、「32日」などでも入力できてしまいます。 これを改造して、正確でない日付を入力できないようにしたいのですが、インターネットなどを調べても、どのようにしたらよいのか、見当もつかず困っております。 お手数ですが、どのようにしたらよいのか、そしてできたら、考え方などもお教えくださいませ。 以下がそのソースです。 <HTML> <HEAD> <TITLE></TITLE> <script language="javascript"> <!-- function myAge(N){ //現在から、誕生日を引き、基準日に足す //つまり、現在から、誕生日の日にち分の時間だけ引く Today = new Date(); myBirth = new Date(1970 , 0 , document.myFormAge.myAgeD.value ); myBirth.setTime(Today.getTime()-myBirth.getTime()); //求めた年月日から基準日を引く myYear = myBirth.getUTCFullYear() - document.myFormAge.myAgeY.value; myMonth = myBirth.getUTCMonth() - (document.myFormAge.myAgeM.value - 1); if(myMonth < 0){ //月がマイナスなので年から繰り下げ myYear --; myMonth += 12; } myDate = myBirth.getUTCDate(); document.myFormAge.Age.value = ""+myYear+""; } //--> </SCRIPT> </HEAD> <BODY> <FORM name="myFormAge"> 生年月日を入力してください。 <br> <br> 年(西暦)<INPUT type="text" size="4" name="myAgeY"> 月<INPUT type="text" size="2" name="myAgeM"> 日<INPUT type="text" size="2" name="myAgeD" onKeyDown="myAge(this.form)"> <br> <br> <br> <br> <br> <INPUT type="text" size="5" name="Age">歳 </FORM> </BODY> </HTML> よろしくご教授くださいませ。

  • 数字の合計をチェック

    お世話になります。 サンプルスクリプト探してましたが見つからなかったのでヒントとか教えてもらえれば助かります。 やりたいことは、 合計数を入力→AとBにそれぞれ枚数を入力 そのとき合計数とAとBにそれぞれ枚数を入力した数の合計が 合っていれば"合ってます" 違っていれば"違っています" とアラートを出したいのですが。 ジャバスクリプト超初心者ですのでどうか宜しくお願いします ------------------------------ <HTML> <HEAD> <TITLE> 合計数のチェック </TITLE> </HEAD> <SCRIPT LANGUAGE="javascript"> </SCRIPT> <BODY> <form name="form"> <p>合計数 <input name="total" type="text" id="total" size="5"> 枚</p> <p>A <input name="kazu1" type="text" id="kazu1" size="5"> 枚</p> <p>B <input name="kazu2" type="text" id="kazu2" size="5"> 枚</p> <p> <input type="submit" name="button" id="button" value="チェック"> </p> </form> </BODY> </HTML> ------------------------------

  • javascriptの計算結果をweb上に表示

    WEB上で入力した数値から複数の計算をさせ、それをフォームからcgiに送るjavascriprを組みたいと思っています。 【現在保有のスクリプト】 下記のスクリプト1では、text1 text2 欄に数値を入力した後、「計算」ボタンを押し、送信ボタンを押すと、計算結果をcgiに送ることが可能です。 (下記の場合は、「入力数値の和」と「積」の2つの数値の送信する) 【やりたいこと】 text1 text2 欄に数値を入力した後、「計算」ボタンを押したあとに、「和と積がブラウザ上に表示され、確認した後に「送信ボタン」を押せるようにしたい。 ということで、修正したのがスクリプト2です。 【質問事項】 スクリプト2では、スクリプト1をベースに javascript上に msg.innerHTML = msg; msg2.innerHTML = msg2; を加え、 HTML上に <p id="msg"></p> <p id="msg2"></p> を加えていますが、これでは動きません。 上記に加え function readText() { var text1 = document.getElementById(""); などのパーツを入力する必要があるはずだと思うのですが、いろいろな場所に試行錯誤しておりますが、うまくいきません。 ご教示いただきたくお願いいたします。 【スクリプト1】************************************************ <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>test</title> <script type="text/javascript"> <!-- //@cc_on document./*@if(1) attachEvent( 'on' + @else@*/ addEventListener( /*@end@*/ 'click', function( evt ) { var t = evt./*@if(1) srcElement @else@*/ target /*@end@*/ var v1, v2, msg, sum, msg2, sum2; if( t.type == 'button' && t.name == 'calc' && t.form.id == 'form2' ) { v1 = t.form.elements['text1'].value; v2 = t.form.elements['text2'].value; if ( isNaN( v1 ) || v1 == '' || isNaN( v2 ) || v2 == '' ) { msg = '数字以外の文字が入ってます'; } else { sum = parseFloat( v1 ) * parseFloat( v2 ); msg = '積は、' + sum + 'です'; sum2 = parseFloat( v1 ) + parseFloat( v2 ); msg2 = '和は、' + sum2 + 'です'; } t.form.elements['plus'].value = msg; t.form.elements['plus2'].value = msg2; } }, false ); //--> </script> </head> <body> <form action="form30.cgi" method="post" name="form2" id="form2"> <fieldset> <input type="text" id="text1" name="text1" size="10" maxlength="10" />+ <input type="text" id="text2" name="text2" size="10" maxlength="10" /> <input type="button" value="計算" name="calc" /> <br> <input type="hidden" name="plus" value=""> <input type="hidden" name="plus2" value=""> <input type="submit" value="送信" /> </fieldset> </form> </body> </html> **************************************************************** 【スクリプト2】上記を改造しweb上で計算結果を表示させたい******** <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>test</title> <script type="text/javascript"> <!-- //@cc_on document./*@if(1) attachEvent( 'on' + @else@*/ addEventListener( /*@end@*/ 'click', function( evt ) { var t = evt./*@if(1) srcElement @else@*/ target /*@end@*/ var v1, v2, msg, sum, msg2, sum2; if( t.type == 'button' && t.name == 'calc' && t.form.id == 'form2' ) { v1 = t.form.elements['text1'].value; v2 = t.form.elements['text2'].value; if ( isNaN( v1 ) || v1 == '' || isNaN( v2 ) || v2 == '' ) { msg = '数字以外の文字が入ってます'; } else { sum = parseFloat( v1 ) * parseFloat( v2 ); msg = '積は、' + sum + 'です'; sum2 = parseFloat( v1 ) + parseFloat( v2 ); msg2 = '和は、' + sum2 + 'です'; } t.form.elements['plus'].value = msg; t.form.elements['plus2'].value = msg2; msg.innerHTML = msg; msg2.innerHTML = msg2; } }, false ); //--> </script> </head> <body> <form action="form30.cgi" method="post" name="form2" id="form2"> <fieldset> <input type="text" id="text1" name="text1" size="10" maxlength="10" />+ <input type="text" id="text2" name="text2" size="10" maxlength="10" /> <input type="button" value="計算" name="calc" /> <br> <input type="hidden" name="plus" value=""> <input type="hidden" name="plus2" value=""> <p id="msg"></p> <p id="msg2"></p> <input type="submit" value="送信" /> </fieldset> </form> </body> </html> ****************************************************************

  • JavaScriptの質問です。

    JavaScriptの質問です。 下記フォームで、 1番が入力されると、 2、3番目のエリアがグレーになって入力不可になる方法を教えてください。 <tr> <th align="right">1番</th> <td><input type="text" size="10" name="shopid" id="shopid" /></td> </tr> <tr> <th align="right">2番</th> <td><input type="text" size="10" name="area" /></td> </tr> <tr> <th align="right">3番</th> <td><input type="text" size="10" name="business" /></td> </tr> <tr> よろしくお願いします。

  • javascriptでフォームの値の計算

    javascript1か月目の初心者です。 7つのテキストフィールドに数値を代入させて合計と平均(最後には標準偏差)を計算しようと思ってます。 以下のように考えましたが、うまくいきません。 strが文字列として?扱われてしまっているようです。 strをevalで囲んでみてもダメです。 詳しい方教えてください。 <!--スクリプト1--> <SCRIPT LANGUAGE="JavaScript"> <!-- function f_check() { if(document.F1.num1.value!=""&&document.F1.num2.value!=""&&document.F1.num3.value!=""&&document.F1.num4.value!=""&&document.F1.num5.value!="" &&document.F1.num6.value!=""&&document.F1.num7.value!=""){ str=0 for(var i = 0;i<document.F1.length;i++){ str+=document.F1[i].value; } alert('合計は'+str+"です"); avrg = (str)/document.F1.length; alert('平均は'+avrg+'です'); //ここから標準偏差の計算(略)。 } // --> </SCRIPT> <form method="post" name="F1" onSubmit="return f_check()"> 数値を入れてください<input type="text" name="num1" size="5"><br> 数値を入れてください<input type="text" name="num2" size="5"><br> 数値を入れてください<input type="text" name="num3" size="5"><br> 数値を入れてください<input type="text" name="num4" size="5"><br> 数値を入れてください<input type="text" name="num5" size="5"><br> 数値を入れてください<input type="text" name="num6" size="5"><br> 数値を入れてください<input type="text" name="num7" size="5"><br> <INPUT TYPE=SUBMIT VALUE="平均をとる"></FORM>

  • JavaScriptの計算式を添削してください。

    250×変数A+200×変数B+150×変数C=合計という 計算をしたくて過去の質問をヒントに自分なりに工夫して 作成いたしました。(JavaScriptは超初心者) 変数A~Bには整数が入ります。 自分で動作を確認したところ問題無く動くようですが、 何か問題がないか心配です。 これでいいのか、間違っているところがないか 確認願いますでしょうか。 <HTML> <HEAD> <SCRIPT language="JavaScript"> <!-- function calc() { document.f.t4.value = eval(250) * eval(document.f.t1.value)+eval(200) * eval(document.f.t2.value)+eval(150) * eval(document.f.t3.value); return true; } //--> </SCRIPT> <TITLE></TITLE> </HEAD> <BODY> <FORM name="f"><INPUT type="text" name="t1" onkeyup="calc()" value="0"><INPUT type="text" name="t2" onkeyup="calc()" value="0"><INPUT type="text" name="t3" onkeyup="calc()" value="0"> = <INPUT type="text" name="t4"></FORM> </BODY> </HTML>

このQ&Aのポイント
  • vh-11のハイハットのオープンネジを回しても反応が悪い問題について質問です。
  • フットスプラッシュの音も出ない問題もあります。
  • 修理以外に解決策はあるのでしょうか。
回答を見る