0

入力した値に応じて自動的に価格を表示するスクリプトを作成しようとしています。

私の値引きは次のようになります。

1 item or more = "£5";
5 items or more = "£30";
10 items or more = "£55";

したがって、ユーザーが入力ボックスに「7」と入力すると、価格はとして表示され£30*7ます。

これを行う方法を知る唯一の方法は、ケースごとにif elseステートメントを作成することですが、もっと簡単な方法があると思いますか?

これは私の擬似コードです:

<script>

function calc() {
var amountVar = document.getElementById('amount').value;

var discount = new Array();
discount[1] = "£5";
discount[5] = "£30";
discount[10] = "£55";

match = discount where amountVar matches key or more;

document.getElementById('price').innerHTML = match;
}

</script>

<input onkeyup="calc();" id="amount">
<br>
Price: <p id="price"></p>
4

1 に答える 1

1

ではなく、if/elseそれらすべてを配列に入れてfor、一致する割引が見つかるまでループで配列を調べることができます。これにはいくつかの利点があります。主な利点は、新しいコードを記述せずに割引配列を編集するのが簡単なことです。

// array must be sorted by qty
var discounts = [{qty:1, discount:5}, {qty:5, discount:30}, {qty:10, discount:55}];

function calcPrice (qty) {
    qty = +qty;

    if (qty > 0)
    {
      // look through the array from the end and find first matching discount
      for (var i = discounts.length; i--;) {
          if (qty >= discounts[i].qty) {
              return discounts[i].discount;
          }
      }
    }

    return 0;
}
于 2012-10-26T21:14:16.633 に答える