0

jQuery / Javascript コードで小さな問題に直面しています。

次のように、ページにいくつかの値があります。

checkbox EXAMPLE EXAMPLE 150
checkbox EXAMPLE EXAMPLE 300
checkbox EXAMPLE EXAMPLE 300

私はこの小さなコードを持っています。これは基本的に、数値 (150、300、300) を配列に追加し、「合計」変数で配列を合計するだけです。(まあ、少なくともこれは私がやろうとしていることです...)

コードは次のとおりです。

 $('.pack_check').click(function() {
        var cout = [];
        total = 0;
        $('#services_pack input:checked').each(function() {
            cout.push(this.cout);
            $.each(cout,function() {
                total += parseInt(this);
                });
            });
        });
    });

私の問題は、最初のチェックボックスをクリックすると問題ないことです。合計 = 150 しかし、2 番目のチェックボックスをクリックすると、合計 = (150 + 150 + 300) になり、少し面倒です...

誰 ?

前もって感謝します !

4

3 に答える 3

0

関数を分割する.each()と、コードはcoutに150を追加し、次に合計に追加します。次に、2回目のパスで、現在の合計に150と300を追加します。つまり、150 +150+300になります。次のようになります。

$('.pack_check').click(function() {
    //adds to array
    var cout = [];
    $('#services_pack input:checked').each(function() {
        cout.push(this.cout);
        });

    //totals all within the array
    total = 0;
    $.each(cout,function() {
         total += parseInt(this);
        });
    }); // end of click function
于 2012-07-30T11:36:28.273 に答える
0

チェックされている/チェックされていないチェックボックスの数の値によってのみ変更されるグローバルな「合計」があります。

var total = 0;

$('.pack_check').click(function() {
  if ($(this).is(':checked')) {
    total += parseInt(this_count);
  } else {
    total -= parseInt(this_count);
  }
});
于 2012-07-30T11:33:28.150 に答える
0

問題は、ネストされたループが合計に追加されている可能性があります。したがって、チェックされたチェックボックスごとに、最初にそれ.coutを配列に追加してから、配列内のすべての要素を合計に再度追加します。また、締め切りが多すぎます});。これを試して:

$('.pack_check').click(function() {
    var cout = [];
    total = 0;
    $('#services_pack input:checked').each(function() {
        cout.push(this.cout);
    });
    $.each(cout,function() {
        total += parseInt(this, 10);
    });
    // do something with total
});

または、合計だけが必要な場合は、cout配列を削除します。

$('.pack_check').click(function() {
    var total = 0;
    $('#services_pack input:checked').each(function() {
        total += parseInt(this.cout, 10);
    });
    // use total here
});

基数を指定するために 2 番目のパラメーターを使用することに注意してくださいparseInt()。したがって、基数 10 で作業する場合parseInt(stringToParse,10):00x

そうは言っても、単項プラス演算子を使用して文字列を数値に変換することをお勧めします。

total += +this;
于 2012-07-30T11:38:11.377 に答える