2016-10-04 3 views
0

Ich habe den folgenden Code, wo ich versuche, Mod-Operator zu verwenden, um 5 Elemente in der Zeile aufzulisten und dann zur nächsten Zeile zu gehen, In der einzelnen Zeile sollte es 5 Elemente anzeigen und dann in der nächsten Zeile sollten die verbleibenden Elemente angezeigt werden, wenn die verbleibenden Elemente mehr als 5 sind, sollte es in der 3. Zeile gehen dannBrechen einer Werteliste, um 5 Datensätze in einer Zeile anzuzeigen und dann zur nächsten Zeile usw.

Ich versuche diesen Code: aber es nichts zu tun

<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> 

es alles in einer Zeile angezeigt wird

Antwort

3

Es gibt ein paar Dinge, die mit Ihrem Code nicht stimmen.

  • Sie werden die Liste nicht durchlaufen, um jedes Element anzuzeigen.
  • Chr (10) und Chr (13) (Zeilenvorschub und Wagenrücklauf) werden in HTML und Ihrem Browser nicht angezeigt.

Ich veränderte Code wie folgt:

<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

und hier ein Beispiel derselben Logik ist mit cfscript Syntax:

<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

Der Code, den ich Ihnen hier gegeben habe, kann etwas aufgeräumt werden, aber hoffentlich ist er für Sie einfach zu verstehen.

+0

ok, ich habe Ihren Code geändert: ' # thisitem #
# thisitem #
' aber wie zeige ich 1 bis 5 auf einem l Ine und 6to 10 in der nächsten Zeile und in der dritten Zeile bleiben –

+0

Mein erster Code tut genau das. Warum hast du es geändert? Ich änderte den Grund zu dem, was ich hatte. Klicken Sie auf den Link und führen Sie ihn aus. Sie werden sehen, dass es drei Zeilen gibt. "1 2 3 4 5" auf der ersten, "6, 7, 8, 9, 0" auf der zweiten und "a, b, c" auf der dritten. –

+0

Second Gist funktioniert gut, aber ich will '12345' jedes Element zu sein' 1, 2, 3, 4, 5' –

1

Hier ist ein anderer Ansatz.

<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> 

Ergebnisse in

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

ist hier ein anderer Ansatz, wenn Sie auf CF10+ sind:

<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> 

Hier ist die TryCF.

Verwandte Themen