• ベストアンサー

入力された数値による計算について

関数を使う式が難しく、どうか教えてください。 金額を入力してもらい、その金額による(1)割引率%、(2)サービスする価格、(3)計算結果、というスクリプトを組まなければなりません。 入力された金額の範囲が1000円~10,000円までのものなら、(1)が5%、(2)が300円、(3)は入力された金額*(1)-(2)で、金額の範囲が上がると、(1)が7%、(2)が500円になるといった具合で、6段階ぐらいに増えていきます。 (3)の計算結果だけでなく、(1)(2)(3)すべてが出るようにするには、どのように組めば良いのでしょうか? どうか宜しくお願いします。

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

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.1

 入力後、割引率、サービス価格、計算結果を表示する、ということですが、何もないところに、いきなり文字を表示することはできません。  割引率、サービス価格、計算結果表示用のテキストボックスを用意しておいて、入力があったら、各数値を表示するのがいいと思います。 ・入力の確認は、入力フィールドのonBlur/onChange、または計算ボタンなどで行います。 ・表示用フィールドにもonBlur/onChange/onKeypressなどを用意しておいて、ユーザによる書き込みがあったら、正しい値を表示し直すといいです。 ・金額による各値の変動ですが、割引率とサービス価格の配列をそれぞれ用意しておき、入力された価格に対する配列でのIndex値を、多重if文で求めればよいと思います。 凄く適当に組んでみましたが、参考にしてみてください。 <script>内 var price, lank;    // 入力価格、入力価格のランク var wari = new Array(0,5,10,15,20);  // 割引率 var serv = new Array(0,300,400,500,600);  // サービス価格 function check() {   price = eval(document.frm.tx0.value);   set_lank();   view(); } function set_lank() {   if ( price< 1000) { lank = 0; }   else if ( 1000<=price && price<10000) { lank = 1; }   else if (10000<=price && price<15000) { lank = 2; }   else if (15000<=price && price<20000) { lank = 3; }   else if (20000<=price ) { lank = 4; } } function view() {   with( document.frm ) {     tx1.value = wari[lank];     tx2.value = serv[lank];     tx3.value = price + (price * wari[lank] / 100) - serv[lank];   } } <body>内 <form name="frm">  <input type="text" name="tx0"">  <input type="button" value="計算する" onClick="check();"><p>  <font face="MS ゴシック">  割引率   <input type="text" name="tx1" onBlur="view();">%<br>  サービス価格<input type="text" name="tx2" onBlur="view();"><br>  価格    <input type="text" name="tx3" onBlur="view();"><br>  </font> </form>

garfield
質問者

お礼

分かり易い説明と、重宝なスクリプトをご回答いただいて、本当にありがとうございました。このスクリプトを加工していけば、いろいろと多用できると思います。大変助かりました。今後とも宜しくお願いいたします。

関連するQ&A