JQuery - 自动计算

时间:2011-11-10 11:01:07

标签: jquery math jquery-calculation

我有一段精神融化在这里。两天来,我一直在看数字并试图让这个该死的计算起作用,但现在我无法让结果方法起作用。

我有1个文本框,2个复选框,1个下拉列表和一个显示结果的h1。

我需要帮助的是计算和结果的显示。 下面是我正在使用的JQuery代码。

    var iAlt = 0;

    // DROPDOWN
    var halloAbo = "";
    $('#hallo-abo').change(function (){
        halloAbo = $('#hallo-abo').val();   
            //$('#sk').text(halloAbo);
    });


    // TEXTBOX
    var maxregning = 0;
    $('#maxRegning').focusout(function(){
        maxregning = 0;
        maxregning = $('#maxRegning').val();

        $('#sk').text(maxregning);
    });



    // SELECT 1
    var pakkerTotal = 0;
    $('#pakker :checkbox').click(function() {
        pakkerTotal = 0;
        $('#pakker :checkbox:checked').each(function(idx, elm) {
            pakkerTotal += parseInt(elm.value, 10);
        });
        //visResultat();
    });

    // SELECT 2
    var betalTotal = 0;
    $('#betal :checkbox').click(function() {
        betalTotal = 0;
        $('#betal :checkbox:checked').each(function(idx, elm) {
            betalTotal += parseInt(elm.value, 10);
        });
        //visResultat();

    });

    // NEED HELP HERE
    var buffer1 = 0;
    var buffer2 = 0;
    function visResultat(){
        iAlt = eval(maxregning -= pakkerTotal -= betalTotal);
        $('#sk').text(iAlt)
    }


    //$('#sk').text(iAlt);

下面是一些HTML

// DROPDOWN    
<select id="hallo-abo" style="float:left;">
<option value="">Vælg dit abo</option>
<option value="49">test 1</option>
<option value="99">test 2</option>
ect
</select>

// TEXTBOX
<input type="textbox" id="maxRegning" value="" />


// CHECKBOX 1
<div id="pakker">
<input type="checkbox" value="39" />test 1<br/>
<input type="checkbox" value="79" />test 2<br/>
</div>

//CHECKBOX 2
<div id="betal">
<input type="checkbox" value="6,5" />test 1<br/>
<input type="checkbox" value="36" />test 2
</div>

// RESULT
<h1 id="sk">0</h1>

希望有人可以帮助我

1 个答案:

答案 0 :(得分:1)

这看起来非常错误;

iAlt = eval(maxregning -= pakkerTotal -= betalTotal);

我怀疑你只是想要:

iAlt = maxregning - pakkerTotal - betalTotal;

第一点: - =运算符实际上更改左侧的值,而不是仅返回计算结果。所以你所做的就是改变maxregning和pakkerTotal。

第二:你正在做一些算术,然后“评估”结果。这毫无意义;如果数学出现在12,它将评估12.toString(),即“12”。 eval(“12”)是12。

第三:Eval几乎总是错误的答案;)如果你认为你需要eval()任何东西,停下来思考它,然后不要这样做。