我有一个简单的增值税计算器,但有一个有趣的计算方法。问题出在最后一栏,妈妈说。 e = a + d * 0.25是正确的,但下面的代码不是。它在计算时显示的数字过大。
JS代码:
$(document).ready(function() {
$('#submit').click(function() {
//get cost and check value
var cost = $('#cost').val();
var check = $('#checkBox');
if (cost != null && cost != "") {
if (cost < 350) {
//c = a * 1
$('#total').val(cost);
$('#toll').val("");
$('#moms').val("");
} else {
if (check.is(':checked')) {
//c = a* 1.107* 1.25
$('#total').val((cost * 1.107 * 1.25).toFixed(2));
//d = a * 0.107
$('#toll').val((cost * 0.107).toFixed(2));
} else {
$('#total').val((cost * 1.25).toFixed(2));
$('#toll').val("");
$('#moms').val("");
}
if ($('#toll').val() != null && $('#toll').val() != "") {
//e = (a + d) * 0.25
var moms = (cost + $('#toll').val()) * 0.25;
$('#moms').val(moms.toFixed(2));
}
}
}
})
});
答案 0 :(得分:3)
输入元素的值始终为字符串。在您的大部分代码中,您都在使用&#34;费用&#34;以这种方式将值隐式转换为数字。但是,+
运算符是不同的,并且优先执行字符串连接以添加。
如果您在初始化时明确强制成本为数字,那么事情应该会更好:
var cost = +$('#cost').val();
前导一元+
运算符将强制将字符串值视为数字。现在,当然,如果字符串看起来不是一个好的数字,那么cost
将被设置为NaN
,所以你应该检查一下:
if (!isNaN(cost)) {
这可以替换您当前的支票,以查看cost
是否为空。
编辑抱歉,您还需要转换$('#toll').val()
的值,以便该行看起来像:
var moms = (cost + +$('#toll').val()) * 0.25;
JavaScript +
运算符非常喜欢字符串。