微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

<ol> 标签不会从 1 开始递增,而是在 html 的 for 循环中使用时保持在 1

如何解决<ol> 标签不会从 1 开始递增,而是在 html 的 for 循环中使用时保持在 1

首先,我对 html 一无所知。我正在尝试使用 Jekyll 构建一个网站,并找到了该网站的模板,我正在对其进行修改我有以下代码

{% for publi in site.data.publist %}

{% assign even_odd = number_printed | modulo: 2 %}

{% if even_odd == 0 %}
<div class="row">
{% endif %}

<div>
  <ol>
  <li>{{ publi.title }}</li>
    <!--   <img src="{{ site.url }}{{ site.baseurl }}/images/pubpic/{{ publi.image }}" class="img-responsive" width="33%" style="float: left" />
 -->  <p>{{ publi.description }}</p>
  <p><em>{{ publi.authors }}</em></p>
  <p><strong><a href="{{ publi.link.url }}">{{ publi.link.display }}</a></strong></p>
  <!-- <p class="text-danger"><strong> {{ publi.news1 }}</strong></p>
  <p> {{ publi.news2 }}</p> -->
  </ol>
</div>

{% assign number_printed = number_printed | plus: 1 %}

{% if even_odd == 1 %}
</div>
{% endif %}

{% endfor %}

site.data.publist 中有一个 yml 文件,它有多个成员,每个成员都有不同的字段。 for 循环有助于遍历 yml 文件的所有成员。正如您在代码中看到的,我在 for 循环中使用了 <ol> 标记,并且我已经将 <li> 标记用于 publi.title(yml 文件成员中的一个字段)。但我得到的只是对 yml 文件中的所有成员重复 1。I have attached the output I get

任何帮助将不胜感激。

解决方法

正如@sirko 在他的评论中提到的,您正在生成无效的 HTML。 首先,<ol> 可能只包含 li 作为直接子代。因此,请确保将其他所有内容也放在 li 标签内。

但您真正的问题是,您在循环中生成 ol 标签。如评论中所述,您的输出包含多个列表,每个列表包含 1 个元素,而不是包含 n 个元素的 ONE LIST。

为了改变这种情况,您必须将 ol 移到 for 循环之外。 (然后确保您仍然生成有效的 HTML => 见第 1 点)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。