【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言

関数を使う式が難しく、どうか教えてください。

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

A 回答 (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>
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/05/15 10:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!