Это больше обзор кода / комментарий, чем полный ответ.В этом блоке кода происходит много всего.Как сказал Джеймс, ваш код смешивает таблицы и элементы div и добавляет некоторые Bootstrap.В ней много переменных, неясно, в какой области они находятся (например, readonly
), и множество переменных, которые на самом деле не нужны (например, loopcount
и allowDown
).Есть также пара переменных, которым не нужны кавычки и фунты (например, <cfset ID = "#qAttachments.filename#">
, которые могут быть просто <cfset ID = qAttachments.ID>
), и пара мест, где переменная URL используется непосредственно в коде.И пару других вещей.
Это устаревший код, поэтому я полностью понимаю.Это то, что есть, и если это код CF11, вероятно, многое было улучшено с момента его написания.Здесь легко быть квотербеком в понедельник утром.
Тем не менее, вы можете значительно сократить то, что вы делаете на этой странице, между вашими tbody
тегами.
Чтобы упростить ситуацию, я пропустил большую часть вашего HTML, над которым вы работаете.
Поскольку вы используете цикл запросов, вам не нужно отслеживать количество циклов, потому что оно уже является частью запроса, результатом которого является currentRow
.И вам не нужно устанавливать allowDown
, потому что вы ссылаетесь на него только один раз.Единственное, что вам действительно нужно - это инициализировать ids
, чтобы вы могли ListAppend()
вместо того, чтобы пытаться понять, как обрабатывать запятую.
<cfset ids="">
<cfoutput>
<cfloop query="qAttachments">
<!--- HTML Display Code In This Block --->
EXAMPLE: WE ARE ON ID = #id#
<!--- Move Buttons --->
<cfif currentRow NEQ 1> MOVE UP </cfif>
<cfif currentRow NEQ qAttachments.recordcount> MOVE DOWN </cfif>
<br>
<!--- --->
<!--- Build ID list for hidden form. --->
<cfset ids = ListAppend(ids,id)>
</cfloop>
<br>
< hiddenFormInput > possibleIDs = "#ids#" < /hiddenFormInput >
</cfoutput>
https://cffiddle.org/app/file?filepath=870efd11-b974-4905-8d47-9afb41fa2a10/e47a5d00-1a86-4cd9-8996-f256ad72dff5/49648087-5075-48c1-9a96-23d20b6e2d82.cfm
Опять же, это всего лишь концептуальный код для лучшего построения вашего цикла.И на этом примечании, так как это CF11, вам будет гораздо лучше использовать цикл cfsccript, а не cftags.И я бы порекомендовал отделить ваш код CFML от кода вашего дисплея, возможно, с помощью функции CF, которая может возвращать набор данных для циклического просмотра вашего дисплея.
И последнее, что я прокомментирую, - это использование ID
в качестве общего имени.Внутри вашего цикла у вас есть 3 различных ID
используемых переменных: 1) session.module.id
2) ID
из вашего запроса 3) и переменная ID
, основанная на запросе вашего цикла ID
.В этом конкретном случае вы получаете значения, которые вы намереваетесь, но, как правило, плохая идея иметь на странице несколько переменных с одним и тем же именем, и ID
это легко сделать.Все, что для этого нужно, - это изменить порядок оценки, и это вызовет головную боль, которую трудно отладить.