我有这个价格计算器,其中每件商品的价格是
2
。如果数量超过1.8
,我需要价格为1000
。另一种情况也可以视为折扣,例如数量大于1000
,则折扣10%
我尝试过使用
if
条件,但我不知道如何解决这个问题。
function calculate(price) {
var qty = document.getElementById("qty").value || 0;
qty = parseFloat(qty).toFixed(2);
var result = parseFloat(qty * 2).toFixed(2);
document.getElementById("result").value = result;
if (result >= 1000) {
result = result - 10%
}
}
<form role="form" id="price" name="price">
<p>
<input type="text" id="qty" onchange="calculate(qty*2)" value="">
</p>
<p>
<input type="text" id="result" value="" disabled>
</p>
</form>
问题是因为
10%
不是有效术语。您需要以数学方式计算出百分比并将其从总数中删除,如下所示:
const itemPrice = 2;
const result = document.querySelector('#result');
document.querySelector('#qty').addEventListener('input', e => {
const qty = parseInt(e.target.value, 10);
const subtotal = itemPrice * qty;
const discount = qty > 1000 ? 0.1 : 0; // 0.1 here = 10%
const total = subtotal - subtotal * discount;
result.value = total.toFixed(2);
});
<form role="form" id="price" name="price">
<p>
<input type="text" id="qty" value="" />
</p>
<p>
<input type="text" id="result" value="" disabled />
</p>
</form>
请注意,此逻辑故意冗长,只是为了演示目的。如有必要,您可以使其更简洁。