使用循环以特定顺序生成两列列表

时间:2014-03-04 19:56:37

标签: loops html layout coldfusion

我需要以某种方式在我的页面上显示一个清单。清单包含在一个数组中,我目前正按以下方式循环:

<div class="width-100"> <!---- this is the main container --->
    <cfloop from="1" to="#ArrayLen(steps)#" index="alpha">  
        <cfif (alpha MOD 2) EQ 1>               
            <div class="width-100">  <!--- this is the start of a 'row' --->
        </cfif>
        <div class="width-50">  <!--- this is a 'step' --->
            #steps[alpha].StepNum.xmltext#  
            <input class="f-right" type="checkbox" />
        </div>
        <cfif (alpha MOD 2) EQ 0>
            </div>  <!--- end of a 'row' --->
        </cfif>
    </cfloop>
</div>

上面的代码给我一个这样的清单,其中的步骤在'列'之间交替: incorrect checklist

当我需要的是这样的清单时,前半部分步骤在第一列,后半部分在第二列: correct checklist

我需要保持上面列出的div结构,其中一个100%div包含2个50%divs w / checklist步骤。我猜有一种聪明的方法可以做到这一点(可能有更多的MOD?),但我看不到它。

1 个答案:

答案 0 :(得分:2)

如果要垂直而不是水平地进行,只需以不同方式构建行。首先弄清楚你正在使用多少行:

<cfset numrows = Ceiling(ArrayLen(steps)/2) >

因此,对于10条记录,您将得到5行。如果奇怪的话,天花板电话就会四舍五入。

<div class="width-100"> <!---- this is the main container --->
    <cfloop from="1" to="#numrows#" index="alpha">  

        <div class="width-100">  <!--- this is the start of a 'row' --->

        <div class="width-50">  <!--- this is a 'step' --->
            #steps[alpha].StepNum.xmltext#  
            <input class="f-right" type="checkbox" />
        </div>
        <div class="width-50">  <!--- this is a 'step' --->
        <cfif isDefined("steps[alpha+numrows].StepNum.xmltext")>
            #steps[alpha+numrows].StepNum.xmltext#  
            <!--- next to step 1 you get step 6 --->
            <input class="f-right" type="checkbox" />
        </cfif> <!--- cfif because last one won't be defined if odd --->
        </div>

        </div>  <!--- end of a 'row' --->

    </cfloop>
</div>