使用jsp在表的一行中只显示四个元素

Display only four elements in a row in table using jsp

本文关键字:显示 元素 四个 一行 jsp 使用      更新时间:2023-09-26

我在一行动态生成复选框,但我想在一行中只显示4个复选框,然后在下一行。我试过这个代码,但我无法实现我的目标。请帮帮我吧

<c:forEach var="group" items="${actionBean.roles}" varStatus="loop">
        <table>
         <tr>
          <td><s:checkbox name="category1" id="category${loop.index}" class="category"
            onclick="OnChangeCheckbox(this,id)" checked="false"></s:checkbox> <b> <s:label for="${group}" />
          </b></td>
         </tr>
         <tr>
          <c:forEach var="item" items="${actionBean.activityroles}">
            <c:if test="${not empty actionBean.activityroles && item.label == group }">
              <td width="25%"><s:checkbox name="category11" value="${item.id}" class="category${loop.index}"></s:checkbox> <s:label
                for="${item.name}" title="${item.description}" /></td>
           </c:if>
          </c:forEach>
         </tr>
        </table>
       </c:forEach>

在这个代码中,我有一个复选框作为标题,它的子复选框在下一行。都是动态生成的

<script>
function OnChangeCheckbox(checkbox, checkid) {
        if (checkbox.checked) {
          $('.' + checkid).attr('checked', true);
        } else {
          $('.' + checkid).attr('checked', false);
        }
      }
</script>

您可以使用一个变量来检查它是否是第4项,并打破类似的规则。我没有测试下面的代码(它可能有一些语法错误),但它应该是周围,希望它会有所帮助:

<c:forEach var="group" items="${actionBean.roles}" varStatus="loop">
    <table>
        <tr>
            <td colspan="4"><s:checkbox name="category1" id="category${loop.index}" class="category"
                onclick="OnChangeCheckbox(this,id)" checked="false"></s:checkbox> <b> <s:label for="${group}" />
                </b>
            </td>
        </tr>
        <c:set var="index" value="0"/>
        <c:forEach var="item" items="${actionBean.activityroles}" varStatus="s">
            <c:if test="${index % 4 eq 0}">
                <tr>
            </c:if>
            <c:if test="${not empty actionBean.activityroles && item.label == group }">
                <td width="25%">
                    <s:checkbox name="category11" value="${item.id}" class="category${loop.index}"></s:checkbox>
                    <s:label for="${item.name}" title="${item.description}" />
                </td>
                <c:set var="index">${index + 1}</c:set>
                <c:if test="${s.last && index % 4 neq 0}">
                    <td colspan="${4 - (index % 4)}">&nbsp;</td>
                </c:if>
            </c:if>
            <c:if test="${index % 4 eq 3 || s.last}">
                </tr>
            </c:if>
        </c:forEach>
    </table>
</c:forEach>