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,如果我选中第二个复选框,则减去 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 中,您可以将事件附加到每个输入,并在每次调用处理程序时检查“checked”属性;如果为真,则从总和中减去输入值:

<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 回答