Html 尝试循环浏览项目的选项列表,但不打印最后一个选项 ${option.name}: ${option.value}

Html 尝试循环浏览项目的选项列表,但不打印最后一个选项 ${option.name}: ${option.value},html,list,loops,freemarker,Html,List,Loops,Freemarker,上面的代码(html内部)是我用来循环浏览项目内部选项列表的代码。目前,它循环遍历所有选项并打印所有选项。但是,我想这样做,它不会打印此列表中的最终选项 我有点受限,因为我必须通过html单独完成这项工作。我假设我需要某种类型的if语句来告诉它在到达最后一个选项时停止,或者具体告诉它停止在哪个选项内容,但我似乎不知道如何编写它。option\u index提供当前选项的索引,size提供长度,您只需要将它们与if语句进行比较 选项_索引基于0,因此需要从大小中减去1,以不包括最后一项 注意-您也

上面的代码(html内部)是我用来循环浏览项目内部选项列表的代码。目前,它循环遍历所有选项并打印所有选项。但是,我想这样做,它不会打印此列表中的最终选项


我有点受限,因为我必须通过html单独完成这项工作。我假设我需要某种类型的if语句来告诉它在到达最后一个选项时停止,或者具体告诉它停止在哪个选项内容,但我似乎不知道如何编写它。

option\u index
提供当前选项的索引,
size
提供长度,您只需要将它们与if语句进行比较

选项_索引基于0,因此需要从大小中减去1,以不包括最后一项

注意-您也可以使用
option?index
获取索引,具体取决于您使用的freemarker版本,但是
option\u index
将适用于较新的freemarker版本以及较旧的freemarker版本

为了完整起见,我还将添加
?is_last
,这归功于ddekany的回答,用法

总之,如果您有一个更新的freemarker版本,if语句可以这样编写

更新-假设Freemarker 2.3.23或更高版本

<#list orderItem.options as option>
    <tr>
        <td class="order-item-detail">
            ${option.name} :
        </td>
    </tr>
    <tr>
        <td class="order-item-red">
            ${option.value}                                            
        </td>
    </tr>
</#list>
<#if option?is_last>
    ....
</#if>

....
原始答案

<#list orderItem.options as option>
    <tr>
        <td class="order-item-detail">
            ${option.name} :
        </td>
    </tr>
    <tr>
        <td class="order-item-red">
            ${option.value}                                            
        </td>
    </tr>
</#list>
<#if option?is_last>
    ....
</#if>

${option.name}:
${option.value}
尺寸文件

序列中的子变量数(作为数值)。这个 序列s中可能的最高索引是s?size-1(因为 第一个子变量为0),假设序列至少有 一个子变量

索引文件

返回迭代所在的基于0的索引(由 循环变量名)当前有效


您可以删除列表的最后一项(请注意,对于已空的列表,这将导致错误):


我不知道您正在使用什么使其动态化,但我确信它有一个选项来获取
orderItem.options的子集。options
这应该是什么语言?我在你的标签里找不到。那不是普通的HTML。您使用的模板系统是什么?为什么不使用CSS隐藏最后两个
元素呢?老实说,我不知道我使用的是哪种语言。我知道我正在使用平台Ecwid创建一个商店,它给了我很少的编码选项。我只能访问发票布局的html和css,这就是我试图编辑的内容。它看起来像Freemarker,所以我添加了Freemarker标记OK,我喜欢它不会破坏我的代码(就像我以前尝试使用if语句一样),但是,它似乎没有任何区别。它仍然打印所有选项/我知道每次打印总共会有6个选项,因为我为每个项目创建了6个选项。我可以只针对选项列表中的最后一个索引吗?您可以打印出索引和大小,以确保逻辑正常,
${option\u index}
${orderItem.options?size}
将它们放在html中进行测试,这样您就可以知道哪里出错了同样的事情,它似乎根本不会影响它。所有选项仍打印在发票上。@JamesLee确定,请立即尝试。它应该是
orderItem.options?size
我检查了错误项目的大小
<#list orderItem.options as option>
  <#if !option?is_last>
     ...
  </#if>
</#list>