- ベストアンサー
異なるフォームから呼び出したfunctionの計算方法
- 異なるフォームから呼び出したfunctionを使用して、各フォームの計算結果を合算する方法を教えてください。
- 4つのフォームに含まれる呼び出しを個別に計算し、最後にそれらの結果を総合計算する方法を教えてください。
- HTMLのフォーム名と関数名に注意しながら、各フォームの小計を計算し、それらを合算して総合計を出す方法を教えてください。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
vat total=0; function sougoukei(){ keisan1(document.getElementById('frm1')); keisan2(document.getElementById('frm2')); keisan3(document.getElementById('frm3')); keisan4(document.getElementById('frm4')); ここから各小計をたして総合計を出す } 各フォームには <form id="frm1">としてidをふる 各 keisan?()の関数の中で小計が計算できたら total+=小計額; で加算する ということで total に合計が代入!
その他の回答 (6)
どうかしてる!<俺 合計が正しく表示されなかった。;_; <html> <body> <div id="a"> <form id="frm1"> 1.<input type="text" class="chknum keta3 pr"><br> 2.<input type="text" class="chknum keta3 pr"><br> 3.<input type="text" class="chknum keta3 pr"><br> 4.<input type="text" class="chknum keta3 pr"><br> G.<input type="text" class="chknum keta3 shoukei"> <input type="button" value="計算" onclick="shoukei(this.form)"> </form> <form id="frm2"> 1.<input type="text" class="chknum keta3 pr"><br> 2.<input type="text" class="chknum keta3 pr"><br> 3.<input type="text" class="chknum keta3 pr"><br> 4.<input type="text" class="chknum keta3 pr"><br> G.<input type="text" class="chknum keta3 shoukei"> <input type="button" value="計算" onclick="shoukei(this.form)"> </form> </div> <form> <input type="text" id="go"> <input type="button" value="計算" onClick="goukei()"> </form> <script> var total=0; function shoukei(f){ var o=f.elements, m=o.length, k=0; for(var i=0;i<m;i++){ if(o[i].className.match(/chknum/)) if(o[i].value.match(/[^,\d,]/)) {alert('不正');return; } if(o[i].className.match(/pr/)) k+=(o[i].value.replace(/,/g,'')-0); if(o[i].className.match(/keta3/)) o[i].value=co3(o[i].value); if(o[i].className.match(/shoukei/)) { o[i].value=co3(k); total+=(k-0);} } } function goukei(){ total=0; var fm=document.getElementById('a').getElementsByTagName('form'),m=fm.length; for(i=0;i<m;i++) shoukei(fm[i]); document.getElementById('go').value=co3(total); } function co3(s){var n=new String(s).replace(/,/g,'');while(n!=(n=n.replace(/^(-?\d+)(\d{3})/,'$1,$2')));return n;} </script> </body></html>
FRM.hk5.value = ttl-(FRM.hk2.value*2); この処理が抜けてた! しかも何のためなのかわかりません。
<form id="frm2"> だね~。たびたび訂正。 どうも朝は頭がまわらん!
訂正12行目<form id"=frm2"> 本当はidを振らなくても計算してるけどね・・
<html> <body> <div id="a"> <form id"=frm1"> 1.<input type="text" class="chknum keta3 pr"><br> 2.<input type="text" class="chknum keta3 pr"><br> 3.<input type="text" class="chknum keta3 pr"><br> 4.<input type="text" class="chknum keta3 pr"><br> G.<input type="text" class="chknum keta3 shoukei"> <input type="button" value="計算" onclick="shoukei(this.form)"> </form> <form id"=frm1"> 1.<input type="text" class="chknum keta3 pr"><br> 2.<input type="text" class="chknum keta3 pr"><br> 3.<input type="text" class="chknum keta3 pr"><br> 4.<input type="text" class="chknum keta3 pr"><br> G.<input type="text" class="chknum keta3 shoukei"> <input type="button" value="計算" onclick="shoukei(this.form)"> </form> </div> <form> <input type="text" id="go"> <input type="button" value="計算" onClick="goukei()"> </form> <script> var total=0; function shoukei(f){ var o=f.elements, m=o.length, k=0; for(var i=0;i<m;i++){ if(o[i].className.match(/chknum/)) if(o[i].value.match(/[^,\d,]/)) {alert('不正');return; } if(o[i].className.match(/pr/)) k+=(o[i].value.replace(/,/g,'')-0); if(o[i].className.match(/keta3/)) o[i].value=co3(o[i].value); if(o[i].className.match(/shoukei/)) o[i].value=co3(k); total+=k; } } function goukei(){ total=0; var fm=document.getElementById('a').getElementsByTagName('form'),m=fm.length; for(i=0;i<m;i++) shoukei(fm[i]); document.getElementById('go').value=co3(total); } function co3(s){var n=new String(s).replace(/,/g,'');while(n!=(n=n.replace(/^(-?\d+)(\d{3})/,'$1,$2')));return n;} </script> </body></html>
vat total; function sougoukei(){ total=0; 各処理.. } でも短いプログラムが好きな俺としては、長いかな~ 小計の計算サブルーチンは、工夫すると1つでまかなえると思ふ。 name は使わず id を!
お礼
できました! 何度も回答ありがとうございます 全部きちんと動いたときには 感動しました ありがとうございます またご縁がありましたら これに懲りずよろしくお願いします