EJS循环打印出额外的条目

时间:2018-10-12 22:41:15

标签: javascript loops each ejs logical-operators

我无法弄清楚为什么这个EJS每个循环在尝试了一些不同的概念约束之后都会多次打印 a href tel:。我无法将此电话号码打印一次!

此循环语句是info.person父循环的子循环,该循环读取列出的所有电话号码。子循环必须作为每个函数加载(据我所知),因此我试图将其限制为仅第一个数字。

注意:这也非常有趣,因为SVG电话项仅加载一次。但是,a href作为同一IF语句的一部分加载了多次!!!我几乎觉得这是偷偷摸摸的Google跟踪与我使用Trisquel的Abrowser之间的冲突。 (请参阅:Google Tracking)。

此代码显示一个用于手机的SVG和多个href tel:项目(请参见屏幕截图)

            <div class="row">
        <% if (info.phones){ %>
          <% var j = 0; %>
            <% $.each(info.phones, function(i, phone){ %>
                <% if (j == 0){ %>
                    <div class="col-xs-1"><img class="svg_icon" src="/images/svg/phone.svg"/></div><div class="col-xs-7"><a href='tel:<%= phone %>'><%= phone %></div>
                    <% j = 1; %>
                <% } %>
            <% }) %>
        <% } %>
        </div>

我在这里必须使用图像,因为从检查器粘贴代码太困难了,但这是客户端ejs。 And here is what prints out successfully, and, just to clarify there is only one href=tel: in the whole page which here appears multiple times.

因此,我尝试将子循环迭代器从i更改为j,这是有意义的,因为父循环使用了i。但是结果。

            <div class="row">
        <% if (info.phones){ %>
            <% $.each(info.phones, function(j, phone){ %>
                <% if (j == 0){ %>
                    <div class="col-xs-1"><img class="svg_icon" src="/images/svg/phone.svg"/></div><div class="col-xs-7"><a href='tel:<%= phone %>'><%= phone %></div>
                <% } %>
            <% }) %>
        <% } %>
        </div>

Behavior remains the same in the Brave browser. Please notice one SVG for phone which is inside the IF statement. And the phone number is printing again after the Email SVG!

注2:注:这是从Datamade的MyRep项目派生的项目,该项目非常熟练地使用EJS从“公民信息项目”中提取数据(免费)。

1 个答案:

答案 0 :(得分:0)

没关系,我发现了问题,有些尴尬。 我共进晚餐,最后注意到

的所有重要结束标记

EJS很好地尝试了找到结束标记而不会崩溃,而这超出了IF语句的范围!

<a href='tel:<%= phone %>'><%= phone %>***</a>***</div>