JavaScript/jquery计算问题
您好,我有一个问题,在我重写数量或单价值之前,下面的JavaScript代码不接受当前的GrossTotal()值JavaScript/jquery计算问题,javascript,jquery,Javascript,Jquery,您好,我有一个问题,在我重写数量或单价值之前,下面的JavaScript代码不接受当前的GrossTotal()值 $(document).ready(function () { $("[id*=gridpur]input[type=text][id*=txtCalc]").on('keyup', (function (e) { var unitprice = $(this).closest('tr').find("input[type=text][id*=txtCalcUnit
$(document).ready(function () {
$("[id*=gridpur]input[type=text][id*=txtCalc]").on('keyup', (function (e) {
var unitprice = $(this).closest('tr').find("input[type=text][id*=txtCalcUnitprice]").val();
var quantity = $(e.target).closest('tr').find("input[type=text][id*=txtCalcQuantity]").val();
var total = unitprice * quantity;
var cost = (total / GrossTotal())*100;
$(e.target).closest('tr').find("[id*=lblTotal]").text(total);
$(e.target).closest('tr').find("[id*=lblcost]").text(cost);
}));
});
var gross;
function GrossTotal() {
gross = 0;
$("[id*=gridpur][id*=lblTotal]").each(function (index, item) {
gross = gross + parseInt($(item).text());
});
$("[id*=lblGrandTotal]").text(gross);
return gross;
}
例如,如果输入了以下不正确的输出值
ProductName UnitPrice Quantity Amount Cost %
product1 9 1 9 Infinity
product2 9 1 9 100
product3 9 1 9 50
我只有在重写数量或单价后才能得到正确的值
ProductName UnitPrice Quantity Amount Cost %
product1 9 1 9 33.3
product2 9 1 9 33.3
product3 9 1 9 33.3
确保在从输入读取值时将其默认为0。在分割之前还要检查0
unitprice = !isNaN(unitprice) ? 0 : unitprice;
quantity = !isNaN(quantity) ? 0 : quantity;
var total = unitprice * quantity;
var grossTotal = GrossTotal(),
cost = 0;
if(grossTotal > 0) {
cost = (total / grossTotal) *100;
}
使用parseInt
parseInt($(item).text(), 10)
问题是
GrossTotal()
将所有lblTotal
字段中的值相加,但只有在调用它之后才能填充它们。更改这些行:
var cost = (total / GrossTotal())*100;
$(e.target).closest('tr').find("[id*=lblTotal]").text(total);
$(e.target).closest('tr').find("[id*=lblcost]").text(cost);
致:
谢谢,但我仍然没有得到当前的GrossTotal()值。当你除以0时,你会得到无穷大。问题是你在调用
GrossTotal()
后填写lblTotal
,但是GrossTotal()
需要使用lblTotal
。不,它会替换keyup
处理程序中的那些行。我很难完全理解这个问题,因为你没有显示HTML。所以我不知道哪个字段是哪个。你能制作一个JSFIDLE来演示这个问题吗?我正在使用asp网格视图的代码,但我会尝试制作JSFIDLE
$(e.target).closest('tr').find("[id*=lblTotal]").text(total);
var cost = (total / GrossTotal())*100;
$(e.target).closest('tr').find("[id*=lblcost]").text(cost);