为什么这个用于检查复选框值的javascript循环不起作用?

Why is this javascript loop for checking checkbox values not working?

本文关键字:javascript 循环 不起作用 复选框 用于 检查 为什么      更新时间:2023-09-26

下面的JavaScript表单提交函数将获取第一个复选框值,但将无法获取其他复选框值。我已经测试了很多方法,似乎总是有一个问题,当得到"。第二次选中复选框的值

Javascript:

function checkForm()
{
  numrows = document.theform.numrows.value;
  if(numrows == -1)
  {
    alert("You do not have any transactions setup yet");
    return false;
  }
  emailcheckcount = 0;
  for(i=0; i<=numrows; i++)
  {
      var recid = document.forms["theform"]["recid"+i].value;
      var checkbox = document.getElementById(recid+"_to"+i);
      if (checkbox.checked)
      {
      emailcheckcount++;
      }
  }
    if(emailcheckcount == 0) {
    alert("Please Select At Least One Email for Alerts");
    return false;
    }
  document.theform.submit();
}
HTML/ASP:

<%
    numrows = -1
    strSQL = "select recid, customer, documenttpid, tolist, cclist, bcclist, receivedvia, addmailout, emailsubject from MailOut where customer like '%"&cname&"%' and (receivedvia = 'email' or addmailout = 'email') and emailsubject <> 'ignore' order by customer, documenttpid;"
    Set rs = objConnection2.Execute(strSQL, ,adCmdText)
    if not (rs.eof and rs.bof) Then
      arr = rs.getrows()
      numrows = ubound(arr,2)
      for i=0 to numrows
        dim tolist
        dim cclist
        recid = arr(0,i)
        customer = arr(1,i)
        documenttpid = arr(2,i)
        if not IsNull(arr(3,i)) Then
          tolist = split(arr(3,i),"|")
        else
          tolist = null
        end if

        if not IsNull(arr(4,i)) and Len(arr(4,i)) > 0 Then
          cclist = split(arr(4,i),"|")
        else
          cclist = null
        end if
        bcclist = arr(5,i)
        receivedvia = arr(6,i)
        addmailout = arr(7,i)
        emailsubject = arr(8,i)

    %>
    <tr>
    <!--
    <td valign='top' style="border-bottom:1px solid black;">&nbsp;<%=customer%></td>
    <td valign='top' style="border-bottom:1px solid black;">&nbsp;<%=receivedvia%></td>
    -->
    <td valign='top' style="border-bottom:1px solid black;">&nbsp;<%=documenttpid%></td>
    <td valign='top' style="border-bottom:1px solid black;">
    <input type="hidden" name="recid<%=i%>" value="<%=recid%>">&nbsp;<%=emailsubject%></td>
    <td valign='top' style="border-bottom:1px solid black;">
    <%
    emailnum = 0
    if not isNULL(tolist) then
        for each email in tolist
          if  not(isNULL(email) or trim(email)="") Then
    %>
      <input type='checkbox' id='<%=recid%>_to<%=emailnum%>' name='<%=recid%>_to<%=emailnum%>'>&nbsp;<%=email%> /<%=recid%>_to<%=emailnum%>
      <input type='hidden' name='<%=recid%>_to<%=emailnum%>email' value='<%=email%>'><BR>
    <%
          end if
          emailnum = emailnum + 1
        next
    end if
    %>
    <input type='hidden' name='numtoemails<%=i%>' value='<%=emailnum%>'>
    <BR>Add Email:<input type='text' name='addtoemail<%=i%>'></td>
    <td valign='top' style="border-bottom:1px solid black;">
    <%
    ccnum = 0
    if(not isNULL(cclist))then
        for each email in cclist
          if trim(email) <> "") = 0 Then
    %>
      <input type='checkbox' name='<%=recid%>_cc<%=ccnum%>'>&nbsp;<%=email%>
      <input type='hidden' name='<%=recid%>_cc<%=ccnum%>email' value='<%=email%>'><BR>
    <%
          end if
          ccnum = ccnum + 1
        next
    end if
    %>
    <input type='hidden' name='numccemails<%=i%>' value='<%=ccnum%>'>
    <BR>Add Email:<input type='text' name='addccemail<%=i%>'></td>
    </tr>
    <%
      next
    end if
    %>
    <input type="hidden" name="numrows" value="<%=numrows%>">
    <tr><td align="Right" colspan="4"><input type="button" value="Submit" style="width:70px;" class="btn-primary" onclick="checkForm();"></td></tr>

每次收到新邮件时,emailnum从0开始

   emailnum = 0
...
      <input type='checkbox' id='<%=recid%>_to<%=emailnum%>' name='<%=recid%>_to<%=emailnum%>'>&nbsp;<%=email%> /<%=recid%>_to<%=emailnum%>
然而,你的javascript代码只是增加了后缀i
  var checkbox = document.getElementById(recid+"_to"+i);

检查生成的HTML,看它是否符合你的Javascript假设。