2012-11-02 33 views
1

我有兩個複選框列的網格。 我想爲每列分別計數。我無法單獨訪問它們。 這裏是我曾嘗試:,訪問不同的複選框電網

function CountChkBxCancel() { 
    function CountChkBx() { 
     for (var i = 0; i < document.forms[0].length; i++) { 
     if (document.forms[0].elements[i].checked) { 
      numChecked = numChecked + 1; 
     } 
    } 
    document.getElementById('<%=lblConfirmationCount.ClientID %>').value = numChecked; 
    CountChkBxCancel(); 
    if (numChecked > 0) { 
     document.getElementById('<%=lblConfirmationCount.ClientID %>').innerHTML = numChecked; 
    }else { 
     document.getElementById('<%=lblConfirmationCount.ClientID %>').innerHTML = '0'; 
    } 
} 

這在電網的id兩個複選框列

<ItemTemplate> 
    <%-- <asp:Label ID="Label6" runat="server"> <%#   Container.DataItemIndex + 1 %></asp:Label> --%> 
    <asp:CheckBox ID="chkNominee" runat="server" onclick="CountChkBx()" /> 
</ItemTemplate> 
<ItemTemplate> 
    <asp:CheckBox ID="chkCancel" runat="server" onclick="CountChkBxCancel()" /> 
</ItemTemplate> 

如何訪問複選框計數這些不同的ID?

回答

0
<script type="text/javascript"> 
     function CountChkBx(checkBox) { 
      var checked = 0; 
      var checkBoxes = document.getElementsByClassName(checkBox.parentNode.className); 
      for (var i = 0; i < checkBoxes.length; i++) { 
       if (checkBoxes[i].getElementsByTagName("INPUT")[0].checked) { 
        checked++; 
       } 
      } 

      var label = null; 
      switch (checkBox.parentNode.className) { 
       case "cbNominee": 
        label = document.getElementById("<%= lblConfirmationCount.ClientID %>"); 
        break; 
       case "cbCancel": 
        label = document.getElementById("<%= lblCancelCount.ClientID %>"); 
        break; 
      } 

      if (label) { 
       label.innerHTML = checked.toString(); 
      } 
     } 
</script> 

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" > 
     <Columns> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <asp:CheckBox ID="chkNominee" runat="server" CssClass="cbNominee" onclick="CountChkBx(this)" /> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <asp:CheckBox ID="chkCancel" runat="server" CssClass="cbCancel" onclick="CountChkBx(this)" /> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
</asp:GridView> 
<br /> 
Confirmed: <asp:Label runat="server" ID="lblConfirmationCount" /> 
<br /> 
Canceled: <asp:Label runat="server" ID="lblCancelCount" /> 
+0

Hi.I正在以下錯誤:Microsoft JScript運行時錯誤:parentNode爲空或不是對象 – Richa

+0

你使用相同的onclick屬性中的答案嗎? –

+0

是的,我有整整作爲建議 – Richa

0
   function CountChkBx() { 
        var confirmCount = 0; 
     var cancelCount = 0; 
     Parent = document.getElementById('<%= this.gvNominationList.ClientID %>'); 
     for (i = 1; i < Parent.rows.length; i++) { 
      var tr = Parent.rows[i]; 
      //    var td = tr.firstChild; 
      //    var item = td.firstChild; 
      var td1 = tr.childNodes[0]; 
      var td2 = tr.childNodes[1]; 
      var item1 = td1.childNodes[0].firstChild; 
      var item2 = td2.childNodes[0].firstChild; 

      if (item1.type == "checkbox") { 
       if (item1.checked) 
        confirmCount = confirmCount + 1; 
      } 

      if (item2.type == "checkbox") { 
       if (item2.checked) 
        cancelCount = cancelCount + 1; 
      } 

     } 
     document.getElementById('<%=lblConfirmationCount.ClientID %>').innerHTML = confirmCount; 
     document.getElementById('<%=lblCancelCount.ClientID %>').innerHTML = cancelCount; 
    } 
+0

而不是通過form..have循環最後通過電網環繞在。 – Richa