Вывод, создающий нежелательные пробелы - PullRequest
2 голосов
/ 03 марта 2011

Я выводлю категории с подкатегориями, перечисленными ниже.Каждая подкатегория получает запятую перед ней, если это не первый элемент в цикле.

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

Проблема в том, что в случаях, когда был применен ..., после каждой подкатегории есть дополнительный пробел.См. Ниже: enter image description here

Посмотрите, как есть пробел перед запятой?

Код:

<ul class="defaultUL" style="float:right;">
            <cfloop query="getParent" startrow="7" endrow="12">
              <cfquery name="getSubCategory" datasource="dss">
                SELECT Name, ID FROM Category WHERE ParentID = #getParent.ID#
                </cfquery>
          <cfset SubNumb = getSubCategory.recordcount>

              <li><h3><a href="?Page=#Application.Utility.qsEncode(getParent.Name)#">#getParent.Name#</a></h3>
                  <cfloop query="getSubCategory" startrow="1" endrow="#SubNumb#">
                    <cfif SubNumb gt 4>
                      <cfif getSubCategory.currentRow lt 4 AND getSubCategory.currentRow gt 1>
                          , #getSubCategory.Name#
              <cfelseif getSubCategory.currentRow eq 1>
                            #getSubCategory.Name#
                            <cfelseif getSubCategory.currentRow eq 4>
                            #getSubCategory.Name#...
                        </cfif>
                      <cfelse>
                        #getSubCategory.Name#,
                    </cfif>

                  </cfloop>
                  </li>
            </cfloop>
            </ul>

Я убедился, что данные в базе данных не 'в конце не должно быть пробелов.

Ответы [ 2 ]

7 голосов
/ 03 марта 2011

Используйте функцию listAppend для построения вашей строки:

<cfset subCatList = "" /> <!--- define a variable to hold the list of subcats; variable gets reset for each iteration of outer loop --->
<cfloop query="getSubCategory" startrow="1" endrow="4">
    <!--- listAppend uses , as a the default delimiter. --->
    <cfset subCatList = listAppend(subCatList, getSubCategory.Name) />
</cfloop>
<cfif getSubCategory.RecordCount gt 4>
    <cfset subCatList = listAppend(subCatList,"...") />
</cfif>
<!---- value of subCatList at this point: subcat1,subcat2,subcat3,subcat4... --->
<!--- output subcatlist and fix spacing --->
#replace(subCatList, ",", ", ","all"#
<!--- output is subcat1, subcat2, subcat3, subcat4... --->
3 голосов
/ 03 марта 2011

Используйте <cfsetting enablecfoutputonly="true" /> вверху и <cfsetting enablecfoutputonly="false" /> внизу.Затем используйте <cfoutput></cfoutput>, чтобы явно определить, что следует выводить в браузер.

...