我正在尝试创建一个脚本,根据输入的值自动显示价格。
我的价格折扣可能是:
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>
答案 0 :(得分: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;
}