首页 > 解决方案 > Nodejs EJS 中的循环

问题描述

我有一个带引导程序的 nodejs 应用程序。引导卡将连续放置 3 个,与列中的数据一样多。我尝试了两个 for 循环,但数据在每一行中都重复了。我无法弄清楚如何做到这一点。

我的 EJS 代码是

<% for(var i=0; i<details.length; i++) { %>
          <div class="row">
            <% for(var j=0; j<3; j++) { %>
              <div class="col-sm">
                <div class="card border-danger mb-3" style="max-width: 20rem;">
                    <div class="card-body">
                      <h4 class="card-title"><%= details[i].name %></h4>
                        <p class="card-text">Location : <%= details[i].location %><br>
                          City: <%= details[i].city %><br>
                          Available: <%= details[i].available %><br>
                          Phone No: <%= details[i].phone %></p>
                    </div>
                </div>
              </div>
            <% } %>
          </div>
        <% } %>

只是为了表示,我希望卡片以这种方式显示我的数据: 在此处输入图像描述

标签: javascripthtmlnode.jsexpressejs

解决方案


看起来你只需一个循环就可以逃脱。要使行逻辑正确,只需检查循环计数器i以查看您是否在索引 0、3、6 等上,然后如果是,则可以发出一行。

<% for(var i = 0; i < details.length; i++) { %>
  <% if (i === 0 || i % 3 === 0) { %>
    <div class="row">
  <% } %>
    <div class="col-sm">
      <div class="card border-danger mb-3" style="max-width: 20rem;">
          <div class="card-body">
             <h4 class="card-title"><%= details[i].name %></h4>
                <p class="card-text">Location : <%= details[i].location %><br>
                  City: <%= details[i].city %><br>
                  Available: <%= details[i].available %><br>
                  Phone No: <%= details[i].phone %>
                </p>
          </div>
      </div>
    </div>
  <% if (i === 0 || i % 3 === 0) { %>
    </div>
  <% } %>
<% } %>

推荐阅读