你的问题是 else 条件,金额 > 1000 。你正在使用 tax 未定义时的值,因此您在此行中收到错误:
else
> 1000
tax
var tax = tax.value = (10);
tax 也是一个整数(或调用时的字符串) toFixed() 在它上面)永远不会有 value 属性。
toFixed()
value
要解决此问题,请定义 tax 变量首先,然后修改它 if 条件:
if
$(function() { $('.amount').on('input', function() { var $amount = $(this); var amount = $amount.val() var $form = $amount.closest('form'); var $tax = $form.find(".tax"); var tax = 0; var $sum = $form.find(".sum"); if (amount < 100) { tax = (1 / 10).toFixed(1); } else if (amount <= 1000) { tax = (Number(amount) * (0.5 / 100)).toFixed(1); } else { tax = 10; } $tax.val(tax); $sum.val(parseFloat(amount) + parseFloat(tax)); }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <form> <input type="text" name="amount" class="amount"> <div> <b>tax</b> <p> <input name="tax" type="text" class="tax" readonly="readonly"> </p> </div> <div> <b>total</b> <p> <input name="sum" type="text" class="sum" readonly="readonly"> </p> </form>
还要注意 >= 100 在这里不需要检查 else 如果,我改变了 s 至 amount 。始终使用有意义的变量名。
>= 100
s
amount