0

チェックボックスがチェックされているときの値である合計から差し引くこのJavaScriptコードがあります。私の場合、チェックされたチェックボックスごとに20が差し引かれます。

<script language="JavaScript">
    function Calculate(){
    var tag = window.document.getElementsByClassName("hsnb"), total = <? echo $total; ?>;
    for (var i in tag){
        total -= tag[i].checked && !isNaN(Number(20)) ? Number(20) : 0;
    }
    var cucu = + total.toFixed(2);

    if(cucu < "20"){  
        alert("You dont have enough points!");
        for(i = 1; document.getElementById("bifa" + i) !== null; i++) {
            if (document.getElementById("bifa" + i).checked){

            } else {
                document.getElementById("bifa" + i).disabled = true;
            }
        }
    }

    window.document.getElementById("outputDiv").innerHTML = '<span style="font-size:20px;">You have: POINTS' + cucu + '</span>';
}​
</script>

各チェックボックスに特定の値を付けたいとしましょう。

<input type="checkbox" id="check" name="check" value="10">
<input type="checkbox" id="check" name="check" value="20">

そして、最初のチェックボックスをオンにすると10が減算され、2番目のチェックボックスをチェックすると20が減算されます。意味がわかったら、各チェックボックスの値を減算します。これを手伝ってくれませんか。

4

2 に答える 2

0

こんにちは、jQueryを使ってみてください。

var sub = 0;
jQuery("input[name=check]:checked").each(function(index, element){
    sub = sub + jQuery(element).val();
});
var total = yourNumber - sub;

このスニペットはテストしていませんが、機能するはずです

それが役に立てば幸い

于 2012-11-23T13:24:38.983 に答える
0

プレーンなJavaScriptでは、ハンドラーが呼び出されるたびに、各入力にイベントを付加して「チェック済み」プロパティをチェックできます。trueの場合、合計から入力値を減算します。

<input type="checkbox" id="check" name="check" value="10">
<input type="checkbox" id="check" name="check" value="20">
    <script type="text/javascript">
        window.onload = function(){
            var aBox = document.getElementsByTagName("input"), iTotal = <? echo $total; ?>;
            Array.prototype.forEach.call(aBox,function(oCheck, iIdx,aBox){
                oCheck.onclick = function(){
                    if(this.checked){
                        iTotal = iTotal - this.value;
                        console.log(iTotal);
                    }
                }
            });
        }
    </script>
于 2012-11-23T14:18:36.653 に答える