0

私はこの概念に少し問題があります。指定された量だけ整数のセットを増減する比較的単純なスクリプトを作成しようとしています。

このコードは論理的に機能しますが、期待どおりには機能しません。

HTML:

            <table class="ebc-table">
                <tr>
                  <td class="priceChange">4.00</td>
                  <td class="priceChange">16.00</td>
                  <td class="priceChange">31.00</td>
                  <td class="priceChange">51.00</td>
                </tr></table>

jQuery:

        $(".applybutton").click(function(){
            var adjFactor = $("#adj_factor :selected").val();
            var adjAmount = $("#adj_amount").val();

            if( adjFactor == "$" )
            {
                $(".priceChange").each(function() {
                    var test = $(this).html();
                    var updateAmt = parseFloat(test) + parseFloat(adjAmount);
                    //if( isNaN( parseFloat( updateAmt) ) ) // do something here eventually
                    return $(this).html(updateAmt);
                });
            }

        });

調整額が入力され、ユーザーが適用ボタンをクリックすると、それに応じてすべての値が変更されます。上記のコードでわかるように、合計が計算されるたびに、意図した元の開始番号ではなく、TD に存在する整数が使用されます...もちろん、 $(this).html() はsum が計算され、html に書き込まれます。言い換えれば、合計は互いに積み重なるだけです。

元の数を保持するためにこれをどのように記述し、元の数に加算/減算し、累積された数に/からではありませんか?

私の説明が混乱を招く可能性があることは承知しています。リクエストがあれば、jsfiddle を投稿します。

4

3 に答える 3

3

data- * 属性と jQuery .data()を使用して取得できます。これを参照してください。

HTML:

<table class="ebc-table">
            <tr>
              <td class="priceChange" data-origprice="4.00">4.00</td>
              ...
            </tr>
</table>

JS/jQuery:

$(".applybutton").click(function () {
    var adjFactor = $("#adj_factor :selected").val();
    var adjAmount = $("#adj_amount").val();

    if (adjFactor == "$") {
        $(".priceChange").each(function () {
            var test = $(this).data('origprice'); //gets data-origPrice attribute
            var updateAmt = parseFloat(test) + parseFloat(adjAmount);
            //if( isNaN( parseFloat( updateAmt) ) ) // do something here eventually
            return $(this).html(updateAmt);
        });
    }

});

ブラウザのサポートもとてもいいです!

于 2013-05-01T20:08:15.993 に答える
0

1 つの戦略は、元の値を配列に保存することです。

    var originals = []
    $(".applybutton").click(function(){
    var adjFactor = $("#adj_factor :selected").val();
    var adjAmount = $("#adj_amount").val();

    if( adjFactor == "$" )
    {
        if (originals.length === 0) {
            $(".priceChange").each(function(i) {
                originals[i] = parseFloat($(this).html());
            }
        }
        $(".priceChange").each(function(i) {
        return function() {
            var test = $(this).html();
                var updateAmt = originals[i] + parseFloat(adjAmount);
                //if( isNaN( parseFloat( updateAmt) ) ) // do something here eventually
                else{return $(this).html(updateAmt); }
            });
        }
    }

});
于 2013-05-01T20:08:20.987 に答える
0

ページの読み込み時に元の数値を変数に格納し、インクリメントするときにその値を使用できます。

基本的な例を次に示します。

$(document).ready(function(){
    var origNumber = parseInt($('#num').text(), 10);
    
    $('button').click(function() {
        var incr = parseInt($('#incr :selected').val(), 10);
        alert(origNumber + incr);
    });
});

JSFiddle

複数の値を格納する必要がある場合は、配列を使用します。

于 2013-05-01T20:09:42.987 に答える