1

セルに数字の値を含むテーブルがあります。

私の目的は、表のセルをクリックしてその値を取得し、自由にクリックして値を追加することです。合計を追跡し、別の に表示する必要がありますdiv

のクリックを処理するコードを作成tdし、特に背景色を変更するクラスを追加して、ユーザーがこれまでにクリックしたものを確認できるようにする必要があります。クラスはその場で追加されるので、私はlive().

td次に、新しいクラス ( と呼ばれる) を持つ をオンザフライでチェックし、selectingそれらを追加します。

これは私がこれまでに持っているコードですが、最初にそれらを追加するのではなく、次々と奇妙な順序で追加します。

$(document).ready(function() {
    total = '';

    $('td').click(function() {
        $(this).toggleClass('selecting');
        $('.selecting').live( {
            click: function() {
                if ($('td').hasClass('selecting')) {
                    total += $(this).html();
                }
            }
        })
        $('#feedback').text(total);
    });
})

その後のステップはtd、クリックされたセルを再度クリックすると、再度クリックされたセルの値が合計から差し引かれることです。つまり、新しくクリックされた場合は加算され、もう一度クリックされた場合は減算されますが、それは 2 番目のステップのようなもので、最初にすべてを一度に行うのは難しすぎます。

4

2 に答える 2

1
total += +$(this).text();

文字列を別の文字列に追加するときは、連結しています。足し算をしたい場合は、数字を扱う必要があります。+文字列を数値に変更します。

また、 に変更total = '';total = 0;ます。

于 2012-12-21T09:43:35.897 に答える
0

これを試して:

$('td').click(function() {
    var $td = $(this);
    var total = 0;
    $td.toggleClass('selecting');

    $(".selecting").each(function() {
       total += parseInt($(this).text(), 10);
    });

    $('#feedback span').text(total);
});

フィドルの例

クリックごとに合計を完全に再計算するコードが表示されます。これにより、クリック間の合計を保存する必要がなくなり、クリックされた値を差し引くことができます。これにより、ロジックがはるかに単純になります。

また、1 つ目は非推奨であり、使用すべきではないため、2 つ目は使用する必要がないため、削除しましたlive()live()

于 2012-12-21T09:49:53.877 に答える