1

写真でわかるように、ユーザーが 5 つの要求されたブランドをすべて入力する必要があるのはばかげています (必須ではないため)。要求されたブランドを 1 つだけ選択したい場合もあります。現在設定されているため、小計は、ユーザーが 5 つの単価と 5 つの数量を入力した場合にのみ計算されます...良くありません。5 つすべてを入力しない場合、subtotal は 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

フィールドをループし、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 に答える
1

基本テクニック:

var sum = 0;

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

(ループ: さらに良いアイデアです。)

于 2012-05-16T15:14:11.043 に答える
0

NaNでの全体的な合計結果の問題は、個々の行の合計の1つ以上が空になると、追加しようとしたときに全体的な結果の合計が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 に答える