2016-10-04 5 views
0

У меня есть следующий код, где я пытаюсь использовать оператора mod для отображения 5 элементов на линии, а затем перейти к следующей строке, В одной строке он должен отображать 5 элементов, а затем в следующей строке, он должен отображать оставшиеся предметы, если оставшиеся предметы больше 5, он должен перейти на 3-ю строку, затемНарушение списка значений, чтобы показать 5 записей в одной строке, а затем перейти к следующей строке и т. Д.

Я пробую этот код: но это ничего не делает

<cfset items = "1,2,3,4,5,6,7,8,9,0"> 
<cfif listLen(items) mod 5> 
<cfoutput> 
    #items##Chr(10)##chr(13)#TEST 
</cfoutput> 
</cfif> 

он отображает все в одной строке

ответ

3

В коде есть пара ошибок.

  • Вы не перебираете список, чтобы отображать каждый элемент.
  • Chr (10) и Chr (13) (возврат строки и возврат каретки) не отображаются в HTML и в вашем браузере.

Я изменил код так:

<cfset counter = 0> 
<cfset items = "1,2,3,4,5,6,7,8,9,0,a,b,c"> 
<cfloop index="thisItem" list="#items#"> 
    <cfset counter = counter + 1> 
    <cfif counter mod 5> 
     <cfoutput>#thisItem#, </cfoutput> 
    <cfelse> 
     <cfoutput>#thisItem#<br></cfoutput> 
    </cfif> 
</cfloop> 

Try it here

и вот пример той же логики, используя cfscript синтаксис:

<cfscript> 
counter = 0; 
items = "1,2,3,4,5,6,7,8,9,0,a,b,c"; 
for (counter = 1; counter lte listlen(items); counter++) { 
    if (counter mod 5) { 
     writeOutput('#listGetAt(items,counter)#, '); 
    } else { 
     writeOutput('#listGetAt(items,counter)#<br>'); 
    } 
} 
</cfscript> 

Try it here

Код, который я вам дал, может быть очищен немного, но, надеюсь, его легко понять.

+0

ОК, я изменил ваш код: ' # thisItem #
# thisItem #
' но как я могу отображать от 1 до 5 на одном l ine и 6to 10 на следующей строке и оставаясь на третьей строке –

+0

Мой первоначальный код делает именно это. Почему вы изменили его? Я изменил суть до того, что у меня было. Нажмите ссылку и запустите ее. Вы увидите, что есть три строки. '1 2 3 4 5' на первом,' 6, 7, 8, 9, 0' на втором и 'a, b, c' на третьем. –

+0

второй gist отлично работает, но я хочу '12345' каждый элемент, чтобы быть' 1, 2, 3, 4, 5' –

1

Вот еще один подход.

<cfset items = "1,2,3,4,5,6,7,8,9,0,a,b,c"> 
<cfoutput> 
    <cfloop from="1" to="#listLen(items)#" index="i"> 
     #listGetAt(items,i)# 
     <cfif i mod 5 eq 0> 
      <br> 
     <cfelseif i neq listLen(items)> 
      , 
     </cfif> 
    </cfloop> 
</cfoutput> 

Результаты в

1 , 2 , 3 , 4 , 5 
6 , 7 , 8 , 9 , 0 
a , b , c 
2

Вот другой подход, если вы находитесь на CF10+:

<cfscript> 

    // Items List 
    items_list = "1,2,3,4,5,6,7,8,9,0,a,b,c"; 

    // Convert to array 
    items_array = items_list.listToArray(","); 

    // Item Count 
    itemCount = arrayLen(items_array); 

    // Display 
    for (i = 1; i <= itemCount; i += 5) { 
     writeOutput(items_array.slice(i, i + 5 - 1 > itemCount ? itemCount % 5 : 5).toList(",") & "<br>"); 
    } 
</cfscript> 

Вот TryCF.

Смежные вопросы