打破 Else If 语句
Breaking Else If statement
我正在使用 Shopify's Liquid language 为我的商店创建一些内容列表,但我无法正确使用我正在使用的 if
语句的逻辑。
我正在尝试根据一些条件将 类 分配给 li
html 元素,以便我最终可以将它们分成 5 个链接的组。
首先,我正在检查链接列表是否小于或等于5个链接,如果不是,则继续下一个,是否所有链接都等于或大于10个,如果不是,则转到下一个,是链接等于 15 等等
我知道我的逻辑在某处不太正确,我的代码似乎在第二个 elsif
结束,即使我的链接列表中有 20 个左右的链接。
{% if linklists[footer_linklist-2].links.size <= 5 and linklists[footer_linklist].links == empty %}
columns_1
{% elsif linklists[footer_linklist-2].links.size >= 10 and linklists[footer_linklist].links == empty %}
columns_2
{% elsif linklists[footer_linklist-2].links.size >= 15 and linklists[footer_linklist].links == empty %}
columns_3
{% endif %}
您需要按降序排列 elsif
。第一个中的 >=10
将捕获所有 10 个或更多(包括 15、20 等)。试试这个:
{% if linklists[footer_linklist-2].links.size <= 5 and linklists[footer_linklist].links == empty %}
columns_1
{% elsif linklists[footer_linklist-2].links.size >= 15 and linklists[footer_linklist].links == empty %}
columns_3
{% elsif linklists[footer_linklist-2].links.size >= 10 and linklists[footer_linklist].links == empty %}
columns_2
{% endif %}
首先你应该检查最大的大小,然后越来越小,因为现在,如果链接列表大小是例如 30,那么它将转到 columns_2
,因为 20 >= 10,所以你的代码将分配值 columns_2
并且不会去其他任何地方。正确的代码应该是这样的:
{% if size >= 15 %} // all numbers greater or equal 15
columns_4
{% elseif size >= 10 %} // there you get numbers greater or equal 10, but smaller than 15
columns_3
{% elseif size > 5 %} // I added this, because what will happen if size is for example 7?
columns_2
{% else %} // any size smaller or equal 5
columns_1
{% endif %}
您当然可以按从检测较小尺寸到检测较大尺寸的还原顺序进行(在您的情况下应该更快):
{% if size <= 5 %} // all numbers lower or equal 5
columns_1
{% elseif size <= 10 %} // there you get numbers lower or equal 10, but greater than 5
columns_2
{% elseif size <= 15 %} // all numbers lower or equal 15, but greater than 10
columns_3
{% else %} // any size greater than 15
columns_4
{% endif %}
我正在使用 Shopify's Liquid language 为我的商店创建一些内容列表,但我无法正确使用我正在使用的 if
语句的逻辑。
我正在尝试根据一些条件将 类 分配给 li
html 元素,以便我最终可以将它们分成 5 个链接的组。
首先,我正在检查链接列表是否小于或等于5个链接,如果不是,则继续下一个,是否所有链接都等于或大于10个,如果不是,则转到下一个,是链接等于 15 等等
我知道我的逻辑在某处不太正确,我的代码似乎在第二个 elsif
结束,即使我的链接列表中有 20 个左右的链接。
{% if linklists[footer_linklist-2].links.size <= 5 and linklists[footer_linklist].links == empty %}
columns_1
{% elsif linklists[footer_linklist-2].links.size >= 10 and linklists[footer_linklist].links == empty %}
columns_2
{% elsif linklists[footer_linklist-2].links.size >= 15 and linklists[footer_linklist].links == empty %}
columns_3
{% endif %}
您需要按降序排列 elsif
。第一个中的 >=10
将捕获所有 10 个或更多(包括 15、20 等)。试试这个:
{% if linklists[footer_linklist-2].links.size <= 5 and linklists[footer_linklist].links == empty %}
columns_1
{% elsif linklists[footer_linklist-2].links.size >= 15 and linklists[footer_linklist].links == empty %}
columns_3
{% elsif linklists[footer_linklist-2].links.size >= 10 and linklists[footer_linklist].links == empty %}
columns_2
{% endif %}
首先你应该检查最大的大小,然后越来越小,因为现在,如果链接列表大小是例如 30,那么它将转到 columns_2
,因为 20 >= 10,所以你的代码将分配值 columns_2
并且不会去其他任何地方。正确的代码应该是这样的:
{% if size >= 15 %} // all numbers greater or equal 15
columns_4
{% elseif size >= 10 %} // there you get numbers greater or equal 10, but smaller than 15
columns_3
{% elseif size > 5 %} // I added this, because what will happen if size is for example 7?
columns_2
{% else %} // any size smaller or equal 5
columns_1
{% endif %}
您当然可以按从检测较小尺寸到检测较大尺寸的还原顺序进行(在您的情况下应该更快):
{% if size <= 5 %} // all numbers lower or equal 5
columns_1
{% elseif size <= 10 %} // there you get numbers lower or equal 10, but greater than 5
columns_2
{% elseif size <= 15 %} // all numbers lower or equal 15, but greater than 10
columns_3
{% else %} // any size greater than 15
columns_4
{% endif %}