- ベストアンサー
入力された数値による計算について
関数を使う式が難しく、どうか教えてください。 金額を入力してもらい、その金額による(1)割引率%、(2)サービスする価格、(3)計算結果、というスクリプトを組まなければなりません。 入力された金額の範囲が1000円~10,000円までのものなら、(1)が5%、(2)が300円、(3)は入力された金額*(1)-(2)で、金額の範囲が上がると、(1)が7%、(2)が500円になるといった具合で、6段階ぐらいに増えていきます。 (3)の計算結果だけでなく、(1)(2)(3)すべてが出るようにするには、どのように組めば良いのでしょうか? どうか宜しくお願いします。
- みんなの回答 (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>
お礼
分かり易い説明と、重宝なスクリプトをご回答いただいて、本当にありがとうございました。このスクリプトを加工していけば、いろいろと多用できると思います。大変助かりました。今後とも宜しくお願いいたします。