Javascript 访问网格中的不同复选框
我有一个带有两列复选框的网格。 我想对每一列进行单独计数。我无法单独访问它们。 以下是我尝试过的:Javascript 访问网格中的不同复选框,javascript,asp.net,Javascript,Asp.net,我有一个带有两列复选框的网格。 我想对每一列进行单独计数。我无法单独访问它们。 以下是我尝试过的: function CountChkBxCancel() { function CountChkBx() { for (var i = 0; i < document.forms[0].length; i++) { if (document.forms[0].elements[i].checked) { numChecked
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';
}
}
函数CountChkBxCancel(){
函数CountChkBx(){
对于(var i=0;i0){
document.getElementById(“”).innerHTML=numChecked;
}否则{
document.getElementById(“”).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的复选框计数?
<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" />
函数CountChkBx(复选框){
var=0;
var checkBox=document.getElementsByCassName(checkBox.parentNode.className);
对于(变量i=0;i
确认:
取消:
函数CountChkBx(){
var confirmCount=0;
var cancelCount=0;
父项=document.getElementById(“”);
对于(i=1;i
Hi.我收到以下错误:Microsoft JScript运行时错误:“parentNode”为null或不是对象您是否使用与应答中相同的onclick属性?Microsoft JScript运行时错误:对象不支持此属性或方法..这是现在的错误..也是从代码隐藏调用时的错误..这导致了问题..我在这里已传递(此)。从代码隐藏调用时,我应该传递什么作为参数,以便它也计算页面加载计数。//string myScript=“CountChkBxTest();”;///ClientScript.RegisterStartupScript(this.GetType(),“myScript”,myScript,true);这就是我在网格绑定时所做的,而不是在表单中循环..我终于在网格中循环了。
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;
}