0

我对另一个 cfloop 中的 cfloop 有疑问。这是我的代码:

<cfloop from="1" to="5" index="k">
    <cfloop from="#qry.S#" to="#qry.E#" index="i" step="#CreateTimeSpan(0,0,qry.Leng,0)#">
        <cfset TimeEnd = dateAdd("n", Leng, i)>
            <tr>
                <td>(#k#) #timeFormat(TimeStart, "hh:mm tt")# - #timeFormat(TimeEnd, "hh:mm tt")#</td>
            </tr>
        <cfset TimeStart = dateAdd("n", qry.Leng, i)>           
    </cfloop>   
</cfloop>

上面的代码给了我这样的输出:

    09:00 AM - 09:15 AM
    09:15 AM - 09:30 AM
    09:30 AM - 09:45 AM
    09:45 AM - 10:00 AM
   *10:00 AM - 09:15 AM
    09:15 AM - 09:30 AM
    09:30 AM - 09:45 AM
    09:45 AM - 10:00 AM
   *10:00 AM - 09:15 AM
    09:15 AM - 09:30 AM
    09:30 AM - 09:45 AM
    09:45 AM - 10:00 AM
   *10:00 AM - 09:15 AM
    09:15 AM - 09:30 AM
    09:30 AM - 09:45 AM
    09:45 AM - 10:00 AM
   *10:00 AM - 09:15 AM
    09:15 AM - 09:30 AM
    09:30 AM - 09:45 AM
    09:45 AM - 10:00 AM

如您所见,我将星号放在代码给我错误值的行旁边。出于某种原因,我在第一次循环后的开始时间完成了一次,从结束时间开始。谁能告诉我如何解决这个问题?

4

1 回答 1

3

您不能使用“i”作为外部和内部循环的索引。对内循环 (x) 使用其他东西。例如:

<cfloop from="1" to="5" index="i">
    <cfloop from="#qry.S#" to="#qry.E#" index="x" step="#CreateTimeSpan(0,0,qry.Leng,0)#">
        <cfset TimeEnd = dateAdd("n", Leng, i)>
            <tr>
                <td> #timeFormat(TimeStart, "hh:mm tt")# - #timeFormat(TimeEnd, "hh:mm tt")#</td>
            </tr>
        <cfset TimeStart = dateAdd("n", qry.Leng, i)>           
    </cfloop>   
</cfloop>

我不确定这里的意图,因此您可能需要根据您所追求的内容(例如 start-end),在内部循环中将一些 i 换成 x。

****************************** 编辑 ****************

也许我看到了您的问题(不确定),但根据您的评论,您的问题将是您已重置 timestart var。您需要在第一个循环开始后执行此操作。

<cfloop> outer loop
    <Cfset timestart = *starting value*>
      <cfloop> inner looop

否则,您的时间开始将是您最后一个 cfset 的内容 - 在内部循环中。

于 2015-12-09T16:11:00.673 回答