Как автоматически проверять все флажки с одинаковыми именами?

#javascript #jsp

#javascript #jsp

Вопрос:

Я использовал флажки для проверки писем в моей почтовой системе, которая разработана на Java.

Я хочу установить все флажки при нажатии верхнего флажка, но проблема в том, что флажки отображаются в цикле в соответствии с количеством полученных писем.

Пожалуйста, помогите мне, куда я должен поместить код javascript для решения этой проблемы.

Код цикла inbox приведен ниже:

 <tr >
        <% for(int i=0;i<messageList.size();i  ) { message = (Message)messageList.get(i);%>
        <td width="10%" height="33" align="left"   valign="top" bgcolor="#EEE" >
        <!--This link display the full message-->


        <input name="Mark_Mail" id="mark_mail" onclick="myfunction(this);" type="checkbox" value="<%=message.getMailId()%>" width="50" height="30" align="top" >
        <span id="space1" style="padding:2px"></span>

        <!--Check all the Checkboxes-->
        <script type="text/javascript">
        function checkAll()
        {
            document.getElementById('mark_mail').checked = "true";
        }

        </script>

        <img  src="Images/UnStarred.jpg" height="15" border="0"  id="image1" onclick="swapImage()" />
        <span id="space1" style="padding:2px"></span>
        </td>
        <td width="90%" height="33" align="left" colspan="7"  valign="bottom" bgcolor="#EEE" >
        <!--This link display the full message-->
        <a  id="link" href="viewMail.jsp?mailId=<%=message.getMailId()%>amp;isAttach=<%=message.getAttachmentFlag()%>">
        <!--Display Sender Address-->
        <font color="#000000" size="1"><strong><%=message.getSenderAddress()%></strong></font>
        <span id="space1" style="padding:6px"></span>

        <!--For Display Message Subject-->
        <font color="#000000" size="1"><strong><%=message.getSubject()%></strong></font>
        <span id="space1" style="padding:6px"></span>

        <!--For Display Attachment Image-->
        <%if(message.getAttachmentFlag().equals("1")){%><input type="hidden" name="filename" id="filename" value="<%=message.getFileName()%>" /><input type="hidden" name="filesize" id="filesize" value="<%=message.getFileSize()%> /><img src ="Images/attachment.jpg" style="bgcolor: #EEE" /><%}else{%><span style="padding-left:12px" ></span><%}%>
        <span id="space1" style="padding:6px"></span>

        <!--For Display Time and Date of messaging-->
        <font color="#000000" size="1"><strong><%=message.getTimestamp()%><span style="padding-left:5px"></span><%=message.getDate()%><input type="hidden" name="label" value="<%=message.getLabel()%>"></strong></font>
        </a></td>
        </tr><% } %>
  

Комментарии:

1. Пожалуйста, для вашей же безопасности: Java — это не JavaScript.

2. @Kobi реальный вопрос здесь действительно в JavaScript, однако это действительно трудно увидеть.

3. В следующий раз, пожалуйста, показывайте свою разметку и код в том виде, в каком они отправляются в браузер (используйте ‘View Source’), чтобы нам не приходилось выяснять, как будет выглядеть результирующий HTML. В конце концов, это то, что увидит JavaScript.

Ответ №1:

Вам нужно получить элементы по их имени, так как ID должен быть уникальным:

 function checkAll() {
   var arrMarkMail = document.getElementsByName("mark_mail");
   for (var i = 0; i < arrMarkMail.length; i  ) {
      arrMarkMail[i].checked = true;
   }
}
  

Просто поместите этот код в <head> раздел страницы.

Чтобы вызвать его, установите такой флажок везде, где вам нравится: Master: <input type="checkbox" onclick="checkAll();" />
Однако это лучше сделать с помощью кнопки:

 <button type="button" onclick="checkAll();">Check All</button>
  

Комментарии:

1. мастер: на простой странице это работает нормально, но в моем приложении, поскольку мои письма с флажками отображаются в цикле, поэтому я хочу знать, куда поместить этот код, внутри цикла или над циклом, потому что мой флажок, с помощью которого я должен проверять все остальные флажки, находится выше и вне цикла………… надеюсь на ответ, спасибо