【发布时间】:2013-07-02 11:19:50
【问题描述】:
我正在使用以下函数将我的所有行总计加在一起。每个总数都是十进制数,例如 23.45 。当用户在任何文本输入框中输入任何数量时,它应该触发该功能,但我现在得到的全部是 NaN,它是谁,为什么她要弄乱我的脚本?
顺便说一下,每个 linetotals 都是一个 span,一旦在 qty 文本框中输入了数量,就会填充 line total 计算。
所以基本上,用户出现,从第一行下拉菜单中选择一个价格,比如说 20.00 ,然后他们在文本框中输入数量 qty,比如说 2,然后 jQuery 将 qty 乘以 priceeach 并输出到跨度为 id linetotal1。我想要做的是将所有 linetotals 加在一起以获得总计,但是如果他们没有在第 2 行输入任何内容,linetotal2, 3, 4, 5 将是空的。
<script>
$(document).ready(function () {
$('input').on('keyup', function () {
linetotal1 = $('#linetotal1').text(),
linetotal2 = $('#linetotal2').text(),
linetotal3 = $('#linetotal3').text(),
linetotal4 = $('#linetotal4').text(),
linetotal5 = $('#linetotal5').text(),
grandtotal = parseFloat(linetotal1) + parseFloat(linetotal2) + parseFloat(linetotal3) + parseFloat(linetotal4) + parseFloat(linetotal5);
$('#grandtotal').text(grandtotal);
}); });
</script>
【问题讨论】:
-
如果任何
parseFloat调用返回NaN,结果将是NaN。如果输入不能转换为数字,则返回该值。例如。parseFloat('')返回NaN. -
如何为每个添加一个 if empty ,这样它就会忽略它?
-
哈哈哈......“谁是 NaN”......史诗......不管怎样,你说的是文本框吧?那么你必须使用
$(...).val()而不是text()。 -
linetotal 是通过将其他两个元素相加而生成的内容的跨度。我所做的都是将每个跨度的内容添加在一起,但在计算该行之前,一些跨度将是空的。
-
linetotal1 = parseFloat($('#linetotal1').text()) || 0,试过了吗?