增加/减少大整数集

时间:2013-05-01 19:56:14

标签: jquery parsefloat

我对这个概念有点麻烦。我正在尝试编写一个相对简单的脚本,它将按指定的数量增加/减少一组整数。

此代码在逻辑上起作用但不是所希望的。

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。

3 个答案:

答案 0 :(得分:3)

您可以使用data-* attributes和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);
        });
    }

});

Browser support也非常好!

答案 1 :(得分:0)

一种策略是将原始值保存在数组中。

    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); }
            });
        }
    }

});

答案 2 :(得分:0)

您可以在页面加载时将原始数字存储在变量中,并在递增时使用该值。

这是一个基本的例子:

$(document).ready(function(){
    var origNumber = parseInt($('#num').text(), 10);

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

JSFiddle

如果您需要存储多个值,请使用数组。

相关问题