2012-11-23 37 views
0

我有這個javascript代碼,從總和中減去一個複選框被選中時的值。在我來說,我每個複選框選中它substracts 20Javascript複選框的值

<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.你知道我的意思,減去每個複選框的值。你能幫助我嗎?

+0

我強烈建議使用一個好的JavaScript框架來處理這類工作,以使您的代碼更具可讀性並且更易於編寫。我喜歡Dojo;很多人喜歡jQuery。你想收音機而不是複選框,或者可以應用多重減法?您可以向每個複選框添加一個onChange事件,該複選框會爲每個更改減去(或返回)適當的金額。 – SAJ14SAJ

回答

0

嗨,你應該嘗試使用jQuery,像

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

I'haven't測試這個片段,但它應該工作

希望它可以幫助

0

在普通的JavaScript可以再安裝一個事件給每個輸入,每次處理程序被調用時檢查「checked」屬性;如果爲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>