Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript/jquery计算问题_Javascript_Jquery - Fatal编程技术网

JavaScript/jquery计算问题

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

您好,我有一个问题,在我重写数量或单价值之前,下面的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*=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);