1

正如您在图片中看到的那样,用户必须输入所有 5 个请求的品牌(因为这不是必需的)是很愚蠢的。也许他们只想选择一个请求品牌。按照目前的设置,仅当用户输入 5 个单位成本和 5 个数量时才计算小计……不好。如果他们没有输入全部 5,则小计返回 NaN。

要求品牌

$("a#full_sub_total").click(function(event){
  event.preventDefault();

  var first = $("div#total_result").text();
  var second = $("div#total_result1").text();
  var third = $("div#total_result2").text();
  var fourth = $("div#total_result3").text();
  var fifth = $("div#total_result4").text();

  $("#full_total_results p").text((parseInt(first,10) + parseInt(second,10) + parseInt(third,10) + parseInt(fourth,10) + parseInt(fifth,10)));

});

任何帮助是极大的赞赏。

4

3 回答 3

1

基本技术:

var sum = 0;

var num1 = parseInt(text1, 10);
if (!isNaN(num1)) sum += num1;
// ...

(循环:更好的主意。)

于 2012-05-16T15:14:11.043 回答
1

我会遍历这些total_result字段,并将它们的解析值增量添加到总变量中:

$("a#full_sub_total").on("click", function(){
  var total = 0;
  $("div[id^=total_result]").text(function(i,t){
    total += parseInt( t, 10 ) || 0;
  });
  $(".full_total").text("$" + total);
});

请注意所有这些的主要部分:

total += parseInt( t, 10 ) || 0;

当尝试从元素的文本中解析整数失败时,我们在其位置返回 0。这不会抵消总价值,并且将允许我们继续进行,而不会NaN在以后出现任何情况。

演示:http: //jsbin.com/axowew/2/edit

于 2012-05-16T15:19:04.597 回答
0

您在 NaN 中的总体总计结果的问题是,任何时候一个或多个单行总计为空,它会导致您的总体结果总计等于 NaN 在您尝试添加时(即#+#=#,#+NaN=Nan)

简化您的问题的解决方案:

$('#subtotal').click(function(e) { 
e.preventDefault();

// Clear overall total
$('#overallTotal').empty();

// Loop through each line total
$('div.lineTotal').each(function() {
// If line total is not empty, add
if ($(this).text() != ''){
$('#overallTotal').text(parseInt($('#overallTotal').text) += parseInt($(this).text()));
}
});

});

于 2012-05-16T15:36:09.060 回答