我要在表单中尝试做的是,当用户单击某些复选框时,该值(以浮点形式)加起来是一个总和,但是我的代码现在是追加而不是添加。 / p>
这是我的代码:
<script>
$(document).ready(function() {
function updateSum() {
var total = "0.00";
$(".sum:checked").each(function(i, n) { total += parseFloat($(n).val()).toFixed(2); })
$("#total").val(total);
}
// run the update on every checkbox change and on startup
$("input.sum").change(updateSum);
updateSum();
})
</script>
当我选中多个框时,我得到: 1.002.003.00 而不是: 6.00
我的代码看起来正确,我看不到我错过的内容。任何对此问题的建议将不胜感激。
答案 0 :(得分:1)
let x = 1.22
console.log(typeof (1.22).toFixed(2))
答案 1 :(得分:1)
让我们看一个简单的示例,toFixed()
的行为以及在将原始值作为字符串的情况下如何在JavaScript中添加浮点数:
(function() {
var total = '0.00';
for (var i = 0; i < 5; i++) {
total = (parseFloat(total) + parseFloat(4.3)).toFixed(2);
}
console.log('total', {
total: total,
typeOfTotal: typeof(total)
});
})();
根据以下示例,您可以看到toFixed()
返回了一个字符串,因此我建议将您的代码修改为以下内容,以便正确添加数字:
$(document).ready(function() {
function updateSum() {
var total = "0.00";
$(".sum:checked").each(function(i, n) {
let sum = parseFloat(total) + parseFloat($(n).val());
total = sum.toFixed(2);
});
$("#total").val(total);
}
// run the update on every checkbox change and on startup
$("input.sum").change(updateSum);
updateSum();
});
您可以在此处进一步了解Number.prototype.toFixed()和parseFloat()。