0

私はここで生理的な精神崩壊を起こしています。2日間、私は数字を見て、このいまいましい計算を機能させようとしましたが、結果メソッドを機能させることができません.

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>

誰かがここで私を助けてくれることを願っています

4

1 に答える 1

1

これは非常に間違っているように見えます。

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

私はあなたがただ望んでいたと思います:

iAlt = maxregning - pakkerTotal - betalTotal;

最初のポイント: -= 演算子は、計算結果を返すだけでなく、実際に左側の値を変更します。つまり、あなたが行っていたのは、実際には maxregning と pakkerTotal を変更することでした。

2番目:あなたはいくつかの算術演算を行ってから、結果を「評価」していました。これは無意味です。計算結果が 12 の場合、12.toString() が評価されます。これは "12" です。eval("12") は 12 です。

第三に: Eval はほとんどの場合、間違った答えです;) 何かを eval() する必要があると思う場合は、立ち止まって考えてから、実行しないでください。

于 2011-11-10T11:05:55.973 に答える