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

时间:2015-07-11 04:54:41

标签: javascript html css jsp

我动态地生成一行复选框,但我想在一行中只显示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>

1 个答案:

答案 0 :(得分:1)

您可以使用变量来检查它是否是第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>