【javascript】年齢計算プログラム 改造方法と考え方を教えてください

このQ&Aのポイント
  • javascript初心者がイヌでもわかるjavascript講座(http://www.red.oit-net.jp/tatsuya/java/)を参考にして、年齢計算のプログラムを作成しています。
  • しかし、閏年がない年や誤った日付の入力ができてしまい、正確な日付を制限したいです。
  • インターネットで調べても解決策が見つからず困っているので、改造方法や考え方を教えていただければ幸いです。
回答を見る
  • ベストアンサー

【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> よろしくご教授くださいませ。

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

  • ベストアンサー
  • hisajiro
  • ベストアンサー率37% (124/329)
回答No.3

それでしたらアラートの部分を消して document.myFormAge.名前.value = ""; に置き換えればいけますよ。 答え合わせ用に修正版のソースをJavaScript部分だけ記述しておきますね。 <script language="javascript"> <!-- //日入力後日の数値チェック及び日付が正しいかをチェック:エラー無しなら年齢計算開始 function myAge(N){ var strValue = document.myFormAge.myAgeD.value; var strValueY = document.myFormAge.myAgeY.value; var strValueM = document.myFormAge.myAgeM.value; if (!chkDigit(strValue)) { //alert("数値以外が含まれてます"); document.myFormAge.myAgeM.value = ""; document.myFormAge.myAgeM.focus(); return; } else if (strValueY == "" || strValueM == "" || strValue == "") { //alert("未入力項目があります"); if (strValueY == "") { document.myFormAge.myAgeY.focus(); } else if (strValueM == "") { document.myFormAge.myAgeM.focus(); } else { document.myFormAge.myAgeD.focus(); } return; } else if (strValue < 0 || strValue > 31) { //alert("不正な日付が入力されています"); document.myFormAge.myAgeD.value = ""; document.myFormAge.myAgeD.focus(); return; } else { var uru = chkUru(strValueY); if (uru) { if (strValueM == 2 && strValue > 29) { //alert("不正な日付が入力されています"); document.myFormAge.myAgeD.value = ""; document.myFormAge.myAgeD.focus(); return; } } else { if (strValueM == 2 && strValue > 28) { //alert("不正な日付が入力されています"); document.myFormAge.myAgeD.value = ""; document.myFormAge.myAgeD.focus(); return; } } if ((strValueM == 4 || strValueM == 6 || strValueM == 9 || strValueM == 11) && strValue > 30) { document.myFormAge.myAgeDM.value = ""; //alert("不正な日付が入力されています"); document.myFormAge.myAgeD.focus(); return; } } //現在から、誕生日を引き、基準日に足す //つまり、現在から、誕生日の日にち分の時間だけ引く 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+""; } //年入力後のチェック function checky() { var strValue = document.myFormAge.myAgeY.value; if (!chkDigit(strValue)) { //alert("数値以外が含まれてます"); document.myFormAge.myAgeY.value = ""; document.myFormAge.myAgeY.focus(); return; } } //月入力後のチェック function checkm() { var strValue = document.myFormAge.myAgeM.value; if (!chkDigit(strValue)) { //alert("数値以外が含まれてます"); document.myFormAge.myAgeM.value = ""; document.myFormAge.myAgeM.focus(); return; } if (strValue < 0 || strValue > 12) { //alert("正しい月を入力してください"); document.myFormAge.myAgeM.value = ""; document.myFormAge.myAgeM.focus(); return; } } //数字判定:数字のみならtrueを返す function chkDigit(txt) { for (i=0; i<txt.length; i++) { c = txt.charAt(i); if ("0123456789".indexOf(c,0) < 0) { return false; } } return true; } //閏年チェック function chkUru(y) { if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0)) { if (flag) { return true; } else { return false; } } } //--> </SCRIPT>

matsukaze2
質問者

お礼

丁寧な回答をいただきまして、ありがとうございました。 実際、動かしてみたとき、2000年の生まれ年の場合の年齢が出ませんでした…。 その他の年については、閏年も不正月日もはじかれて、感動しました。 自分では、まだこのようには作れませんので…。

その他の回答 (3)

  • hisajiro
  • ベストアンサー率37% (124/329)
回答No.4

ごめんなさい。 バグちゃってますね。 閏年判定のファンクションが・・・・ //閏年チェック function chkUru(y) { if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0)) { if (flag) { return true; } else { return false; } } } ではなく正しくは //閏年チェック function chkUru(y) { if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0)) { return true; } else { return false; } } です^^;;

matsukaze2
質問者

お礼

お礼が遅れまして、失礼いたしました。 ありがとうございました。 無事、望む形が作れました。 日々勉強してまいりますので、またの機会があれば、よろしくお願いいたします。

  • hisajiro
  • ベストアンサー率37% (124/329)
回答No.2

補足が出る前にある程度できてしまったので参考までにソースを載せておきます。 コピペして動かしてみてから解析してください。 ちなみに日付チェックで閏年及び月判定も行っています。 例えば閏年なら2月は29日まで入力可、それ以外は28まで。 4,6,9,11月は30まで入力可、 1,3,5,7,8,10,12月は31まで可にしてあります。 <HTML> <HEAD> <TITLE></TITLE> <script language="javascript"> <!-- //日入力後日の数値チェック及び日付が正しいかをチェック:エラー無しなら年齢計算開始 function myAge(N){ var strValue = document.myFormAge.myAgeD.value; var strValueY = document.myFormAge.myAgeY.value; var strValueM = document.myFormAge.myAgeM.value; if (!chkDigit(strValue)) { alert("数値以外が含まれてます"); document.myFormAge.myAgeM.focus(); return; } else if (strValueY == "" || strValueM == "" || strValue == "") { alert("未入力項目があります"); if (strValueY == "") { document.myFormAge.myAgeY.focus(); } else if (strValueM == "") { document.myFormAge.myAgeM.focus(); } else { document.myFormAge.myAgeD.focus(); } return; } else if (strValue < 0 || strValue > 31) { alert("不正な日付が入力されています"); document.myFormAge.myAgeD.focus(); return; } else { var uru = chkUru(strValueY); if (uru) { if (strValueM == 2 && strValue > 29) { alert("不正な日付が入力されています"); document.myFormAge.myAgeD.focus(); return; } } else { if (strValueM == 2 && strValue > 28) { alert("不正な日付が入力されています"); document.myFormAge.myAgeD.focus(); return; } } if ((strValueM == 4 || strValueM == 6 || strValueM == 9 || strValueM == 11) && strValue > 30) { alert("不正な日付が入力されています"); document.myFormAge.myAgeD.focus(); return; } } //現在から、誕生日を引き、基準日に足す //つまり、現在から、誕生日の日にち分の時間だけ引く 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+""; } //年入力後のチェック function checky() { var strValue = document.myFormAge.myAgeY.value; if (!chkDigit(strValue)) { alert("数値以外が含まれてます"); document.myFormAge.myAgeY.focus(); return; } } //月入力後のチェック function checkm() { var strValue = document.myFormAge.myAgeM.value; if (!chkDigit(strValue)) { alert("数値以外が含まれてます"); document.myFormAge.myAgeM.focus(); return; } if (strValue < 0 || strValue > 12) { alert("正しい月を入力してください"); document.myFormAge.myAgeM.focus(); return; } } //数字判定:数字のみならtrueを返す function chkDigit(txt) { for (i=0; i<txt.length; i++) { c = txt.charAt(i); if ("0123456789".indexOf(c,0) < 0) { return false; } } return true; } //閏年チェック function chkUru(y) { if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0)) { if (flag) { return true; } else { return false; } } } //--> </SCRIPT> </HEAD> <BODY> <FORM name="myFormAge"> 生年月日を入力してください。 <br> <br> 年(西暦)<INPUT type="text" size="4" name="myAgeY" onBlur="checky()"> 月<INPUT type="text" size="2" name="myAgeM" onBlur="checkm()"> 日<INPUT type="text" size="2" name="myAgeD" onBlur="myAge(this.form)"> <br> <br> <br> <br> <br> <INPUT type="text" size="5" name="Age">歳 </FORM> </BODY> </HTML>

matsukaze2
質問者

補足

ソース、ありがとうございます。 勉強になります。 遅くなりましたが、補足の件です。 アラートを出すのではなく、間違ったものを入力できない、 即ち2月29日と入れると2月 日(テキストボックス内がNULL)となるように設定したいと思ったのですが…。 とりあえず、アラートを出すやり方を動かしてみて、考えてみます。 とはいえ、初心者ですのでどの程度できるか…。 もしお時間が許すようであれば、引き続きよろしくお願いいたします。

  • hisajiro
  • ベストアンサー率37% (124/329)
回答No.1

補足お願いします。 1.入力できないとは不正な文字又はありえない数値が入力されたらエラーメッセージを出して計算させないようにする事と理解して良いか 2.入力エラーはすべての入力が終了し、計算処理に入る前にまとめてチェックするのか、それとも各項目入力時にそれぞれチェックさせるのか この2点の回答お願いします。

関連するQ&A

  • javascript 関数についての質問

    javascriptで 入力された日付を元に30日後、40日後、60日後、90日後の日付を表示したいのですが、 作った関数が1回しか使えませんTT(?)何回も使えるようにしたいです! 初歩的な質問ですみませんが、どうすればよいでしょうか? <html> <head> <title>ねこ</title> <script> function Kekka(days){ Yobi = new Array("日","月","火","水","木","金","土"); Date = new Date(document.form.y.value, document.form.m.value -1, document.form.d.value); d = Date.getDate(); Date.setDate(d+days); y = Date.getFullYear(); m = Date.getMonth()+1; d = Date.getDate(); w = Date.getDay(); str1 = y+"年"+m+"月"+d+"日("+Yobi[w]+"曜日)"; //土曜日か日曜日だったら次の月曜の日付もとる if(w == 0){ w = 1; Date.setDate(d+days+1); d = Date.getDate(); } else if(w == 6){ w = 1; Date.setDate(d+days+2); d = Date.getDate(); } str2 = y+"年"+m+"月"+d+"日("+Yobi[w]+"曜日)"; return str1,str2; } function CLR(){ document.form.y.value="";document.form.m.value="";document.form.d.value=""; document.form.v1.value="";document.form.v1_2.value=""; document.form.v2.value="";document.form.v2_2.value=""; document.form.v3.value="";document.form.v3_2.value=""; document.form.v4.value="";document.form.v4_2.value=""; document.form.v5.value="";document.form.v5_2.value=""; } function Test(){ Kekka(30); document.form.v1.value = str1; document.form.v1_2.value = str2; Kekka(40); document.form.v2.value = str1; document.form.v2_2.value = str2; } </script> </head> <body> てすとなう<br><br> <form name="form"> <input type="text" name="y" size="4">年 <input type="text" name="m" size="2">月 <input type="text" name="d" size="2">日 <input type="button" value="start" onclick="Test()"> <input type="button" value="CLR" onclick="CLR()"> <br><br> 30日後:<input type="text" name="v1" size="27">→<input type="text" name="v1_2" size="27"><br> 40日後:<input type="text" name="v2" size="27">→<input type="text" name="v2_2" size="27"><br> 60日後:<input type="text" name="v3" size="27">→<input type="text" name="v3_2" size="27"><br> 90日後:<input type="text" name="v4" size="27">→<input type="text" name="v4_2" size="27"><br> 3ヶ月後:<input type="text" name="v5" size="27">→<input type="text" name="v5_2" size="27"><br> <br><br> </form> </body> </html>

  • 年齢計算

    超・初心者です。 http://oshiete1.goo.ne.jp/qa4023599.html 上記頁のご質問を参考にして、functionでbody部分テキストフォームの情報を得るか、getElementByIDを用るかして、汎用的なものを作成したいと思ったのですが、値が取れず、うまくいきませんでした。 元のソースを載せますので、ご教授ください。 よろしくお願いします。 <HTML> <HEAD> <TITLE></TITLE> <script language="javascript"> <!-- //日入力後日の数値チェック及び日付が正しいかをチェック:エラー無しなら年齢計算開始 function myAge(N){ var strValue = document.myFormAge.myAgeD.value; var strValueY = document.myFormAge.myAgeY.value; var strValueM = document.myFormAge.myAgeM.value; if (!chkDigit(strValue)) { alert("数値以外が含まれてます"); document.myFormAge.myAgeM.focus(); return; } else if (strValueY == "" || strValueM == "" || strValue == "") { alert("未入力項目があります"); if (strValueY == "") { document.myFormAge.myAgeY.focus(); } else if (strValueM == "") { document.myFormAge.myAgeM.focus(); } else { document.myFormAge.myAgeD.focus(); } return; } else if (strValue < 0 || strValue > 31) { alert("不正な日付が入力されています"); document.myFormAge.myAgeD.focus(); return; } else { var uru = chkUru(strValueY); if (uru) { if (strValueM == 2 && strValue > 29) { alert("不正な日付が入力されています"); document.myFormAge.myAgeD.focus(); return; } } else { if (strValueM == 2 && strValue > 28) { alert("不正な日付が入力されています"); document.myFormAge.myAgeD.focus(); return; } } if ((strValueM == 4 || strValueM == 6 || strValueM == 9 || strValueM == 11) && strValue > 30) { alert("不正な日付が入力されています"); document.myFormAge.myAgeD.focus(); return; } } //現在から、誕生日を引き、基準日に足す //つまり、現在から、誕生日の日にち分の時間だけ引く 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+""; } //年入力後のチェック function checky() { var strValue = document.myFormAge.myAgeY.value; if (!chkDigit(strValue)) { alert("数値以外が含まれてます"); document.myFormAge.myAgeY.focus(); return; } } //月入力後のチェック function checkm() { var strValue = document.myFormAge.myAgeM.value; if (!chkDigit(strValue)) { alert("数値以外が含まれてます"); document.myFormAge.myAgeM.focus(); return; } if (strValue < 0 || strValue > 12) { alert("正しい月を入力してください"); document.myFormAge.myAgeM.focus(); return; } } //数字判定:数字のみならtrueを返す function chkDigit(txt) { for (i=0; i<txt.length; i++) { c = txt.charAt(i); if ("0123456789".indexOf(c,0) < 0) { return false; } } return true; } //閏年チェック function chkUru(y) { if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0)) { if (flag) { return true; } else { return false; } } } //--> </SCRIPT> </HEAD> <BODY> <FORM name="myFormAge"> 生年月日を入力してください。 <br> <br> 年(西暦)<INPUT type="text" size="4" name="myAgeY" onBlur="checky()"> 月<INPUT type="text" size="2" name="myAgeM" onBlur="checkm()"> 日<INPUT type="text" size="2" name="myAgeD" onBlur="myAge(this.form)"> <br> <br> <br> <br> <br> <INPUT type="text" size="5" name="Age">歳 </FORM> </BODY> </HTML> 現在ショップを作っている最中なのですが、その過程で年齢計算が必要となりました。 お手数ですが、よろしくお願いいたします。

  • 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による計算

    テキストボックス「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>

  • textbox間の結合時、空白の時は、スペースを省きたい

    <script type="text/javascript"> <!-- function ketugou(){     document.f.q.value=document.f.t1.value+" "+document.f.t2.value+" "+document.f.t3.value+" "+document.f.t4.value+" "+document.f.t5.value; } //--> </script> <form name="f"> キーワードを入力:<br> <input type="text" size="55" name="t1"><br> <input type="text" size="55" name="t2"><br> <input type="text" size="55" name="t3"><br> <input type="text" size="55" name="t4"><br> <input type="text" size="55" name="t5"><br> <input type="button" name="connect" value="結合" onClick="ketugou()"><br> 結合時の内容を表示:<br> <input type="txt" name="q" size="55" maxlength="255" ><br> </form> で、空白のテキストボックスの場合は、スペース(" ")なしで、 結合させたいんですが、どうしたら、良いのでしょうか?

  • 同じFunctionで、同じ計算させたいのですが

    私は今、以下のようにここで教えていただいたプログラムを参考に組んでは見たものの、同じ行をいくつもコピペすると計算されなくなってしまいます。1行だけの計算でしようとするとうまく計算されるのですが・・・ <HTML> <HEAD> <TITLE> タイトルバーに表示されるテキスト </TITLE> <SCRIPT LANGUAGE="JavaScript"> <!--JavaScript function SUM(){ if(!isNaN(document.sum.text1.value) && !isNaN(document.sum.text2.value) && !isNaN(document.sum.text3.value) && document.sum.text1.value && document.sum.text2.value && document.sum.text3.value){ document.sum.text4.value = eval(document.sum.text1.value) + eval(document.sum.text2.value) - eval(document.sum.text3.value) } if( !isNaN(document.sum.text5.value) && !isNaN(document.sum.text6.value) && document.sum.text5.value && document.sum.text6.value){ document.sum.text7.value = eval(document.sum.text4.value) + eval(document.sum.text5.value) + eval(document.sum.tex6.value) } } //--> </SCRIPT> </HEAD> <BODY> <FORM NAME="sum" onSubmit="SUM();return false;"> A<INPUT TYPE="text" NAME="text1" onChange="SUM()" SIZE="10"><BR> B<INPUT TYPE="text" NAME="text2" onChange="SUM()" SIZE="10"><BR> C<INPUT TYPE="text" NAME="text3" onChange="SUM()" SIZE="10"><BR> D=A+B-C<INPUT TYPE="text" NAME="text4" onChange="SUM()" SIZE="10"><BR> E<INPUT TYPE="text" NAME="text5" onChange="SUM()" SIZE="10"><BR> F<INPUT TYPE="text" NAME="text6" onChange="SUM()" SIZE="10"><BR> G=D+E+F<INPUT TYPE="text" NAME="text7" onChange="SUM()" SIZE="10"><BR> </FORM> </BODY> </HTML>

  • Javaで小数点第4までを処理したい。

    現在近似曲線を算出するプログラムを自作しています。 正確に算出するところまでは到達出来たのですが、最後に小数点以下が多すぎるので、小数点第四までに抑えたいです。 しかし、小数点を処理するようなプログラムを想定していなかったので、とても困惑しております。 私が作っているプログラムはこんな感じです。 <title>近似曲線プログラム</title> <body> <form name="Form1"> <font color="red">近似曲線用プログラム</font><br><br> ・X=<input type= "text" size="11" name="a"><input type= "text" size="11" name="b"><input type= "text" size="11" name="c"><br> ・Y=<input type= "text" size="11" name="e"><input type= "text" size="11" name="f"><input type= "text" size="11" name="g"><br>    <input type= "button" value= "近似曲線の数式を算出" onclick="keisan1()"><br><br> ・標本数=3<br><br> ・Xの平均値=<input type= "text" size="11" name="i"><br> ・Yの平均値=<input type= "text" size="11" name="j"><br><br> ・ΣXi<sup>2</sup>=<input type= "text" size="11" name="k"><br> ・ΣXiYi=<input type= "text" size="11" name="l"><br><br> ・a=<input type= "text" size="11" name="m"><br> ・b=<input type= "text" size="11" name="n"><br><br> 結果<br> ・y=<input type= "text" size="11" name="o">x+<input type= "text" size="11" name="p"> </form> <script language="JavaScript"> function keisan1(){ a = document.Form1.a.value-0; b = document.Form1.b.value-0; c = document.Form1.c.value-0; e = document.Form1.e.value-0; f = document.Form1.f.value-0; g = document.Form1.g.value-0; i=(a+b+c)/3; j=(e+f+g)/3; k=(a*a)+(b*b)+(c*c); l=(a*e)+(b*f)+(c*g); m=(l-3*i*j)/(k-3*(i*i)); n=j-m*i; o=m; p=n; document.Form1.i.value = i; document.Form1.j.value = j; document.Form1.k.value = k; document.Form1.l.value = l; document.Form1.m.value = m; document.Form1.n.value = n; document.Form1.o.value = o; document.Form1.p.value = p; } </script> </body> この中で、結果のoとpの部分を、小数点第四にまでに抑えたいのです、今現在では、小数点以下が10ケタ以上普通に出てしまいます。どちらも四ケタに抑えたいので、このプログラムに導入出来るような小数点処理のプログラムを知っている方がいらっしゃれば、是非丁寧に教えてほしいです。 よろしくお願いします。

  • javascriptを勉強し始めました

    それで簡単なアンケートを作りたいと思い、入力フォームを作って間違えている箇所があれば確認ボタンを押したときに入力に誤りがある項目をアラートで出し、そのアラートに誤っている項目をそのアラート一つにまとめて出したいのですが、出ません。わかないので質問させていただきました。よろしくお願いします。ソースになります。 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>課題</title> <script language ="javascript"> <!-- function datachk(){ if(document.form1.last.value == "") { alert("・氏名(姓)が入力されていません。"); }else{ if(document.form1.last.value.match( /[^一-龠ァ-ヶぁ-ゞA-Z]+/ ) ){ alert("・氏名(姓)は、全角文字のみで入力して下さい。"); }else{ if(document.form1.first.value == "") { alert("・名前(名)が入力されていません。"); }else{ if(document.form1.first.value.match( /[^一-龠ァ-ヶぁ-ゞA-Z]+/ ) ){ alert("・名前(名)は、全角文字のみで入力して下さい。"); } } } } } //--> </script> </head> <body> <div align="center"> 情報入力 </div><br> <br> 以下に、情報を入力してください。<br> <br> <form name = "form1"> *氏名(姓): <input type = "text" name = "last" value = ""><br> (全角10字入力可)<br> *氏名(名): <input type = "text" name = "first" value = ""><br> (全角10字入力可)<br> *性別: <input type = "radio" name = "men" value = "男">男 <input type = "radio" name = "women" value = "女">女<br> <input type="button" value="回答" onClick="javascript:datachk();"><br> </form> </body> </html>

  • JavaScriptで簡単な計算機を作りたいのですが…

    初めて質問させていただきます。タイトルどおり、以下の様なコードを組んだのですが答えが表示されません。なにぶんJavaScriptを勉強し始めて数日の初心者なもので、どこが悪いのか見当がつきません。レベルの低い質問で申し訳ないのですが、皆さんのお知恵をお貸しください。 <html> <head> <title>JAVAscript</title> <SCRIPT LANGUAGE="JavaScript"> <!-- function func(){ a=parseInt(document.masu.0.value); b=parseInt(document.masu.1.value); c=a+b; document.masu.2.value=c; //--> </SCRIPT> </head> <body> <form name="masu"> <input type="text" name="0" SIZE=10 onkeyup="chkNum(this)"> <input type="text" name="1" SIZE=10 onkeyup="chkNum(this)"> <input type="text" name="2" SIZE=10"onkeyup="chkNum(this)"> <input type="button" value="計算" onclick="func()"> </form> </body> </html>

  • 計算式を修正してください。

    初心者です、意味もわからずに見よう見マネで作った計算式のフォームですが 古いIEで動かないので、作りなおしている内に全部の環境で動かなくなりました。 古いIEでも動かしたいです。お助け下さい。(小数点以下は表示しない) function calc(form){ form.W.value = Math.round(form.K.value * form.Q.value); form.A.value = Math.round(form.Q.value * 3.5); form.P.value = Math.round(form.T.value * 0.28); form.E.value = Math.round((form.W.value + form.A.value) * form.P.value); form.F.value = Math.round(form.E.value * 30);/* 日 */ form.G.value = Math.round(form.E.value * 365);/* 年 */ form.V.value = Math.round(form.K.value / 2); form.L.value = Math.round(form.V.value * form.P.value); form.M.value = Math.round(form.L.value * 30);/* 日 */ form.N.value = Math.round(form.L.value * 365);/* 年 */ form.X.value = Math.round(form.E.value - form.L.value); form.Y.value = Math.round(form.F.value - form.M.value); form.Z.value = Math.round(form.G.value - form.N.value); } <form> <input name="W" type="hidden" value="0"> 体力<select name="K"> <option value="0" selected="selected">体力</option> <option value="8">男性</option> <option value="6">女性</option> <option value="4">子供</option> </select> ×  走行<input type="text" name="Q" size="6" value="">周  <select name="T"> <option>0</option> <option>1</option> <option>2</option> <option>3</option> </select>のスピード <br> <input type="button" value="計算" name="result" onClick="calc(this.form)"> <input type="reset" value="クリア" name="reset"> <br> 走行1日<input type="text" name="E" size="4" value=""> 走行1月<input type="text" name="F" size="4" value=""> 走行1年<input type="text" name="G" size="4" value=""> <br> 歩行1日<input type="text" name="L" size="4" value=""> 歩行1月<input type="text" name="M" size="4" value=""> 歩行1年<input type="text" name="N" size="4" value=""> <br> <input type="hidden" name="X" size="4" value=""> 2の差<input type="text" name="Y" size="4" value="">、 3の差<input type="text" name="Z" size="4" value=""> </p> </form>

専門家に質問してみよう