好吧,我发现了问题。这不是循环本身。这是清单。请注意,每个逗号后列表都有一个空格。为了便于阅读,我倾向于这样做。然而,显然CF很尊重这个空白作为列表项的真实部分,我不知道。删除列表中的空白可以解决问题。
我使用JavaScript填写一些表单元素。下面的代码有效,但相当重复。所以我试着把它变成一个循环。那种奇怪的方式失败了。工作代码:
<cfset textarr = getPageContext().getRequest().getParameterValues('rep2text')>
<cfset valtitle = textarr[1]>
<cfset valbef = textarr[2]>
<cfset valaft = textarr[3]>
<cfoutput>
<script type = "text/Javascript">
puttitle('#valtitle#', 'title')
puttitle('#valbef#', 'summbef')
puttitle('#valaft#', 'summaft')
</script>
</cfoutput>
这是puttitle
(本例简化):
function puttitle(text, id ) {
document.getElementById(id).value = text;
}
由于我有三个以上的项目,我想通过这样做来压缩代码:
<cfset txt = StructNew()>
<cfset textarr = getPageContext().getRequest().getParameterValues('rep2text')>
<cfset colidls = "title, summbef, summaft"><!---these are the id's--->
<cfset i = 0>
<cfloop list = "#colidls#" index = "item">
<cfset i = i + 1>
<cfset txt[item] = textarr[i]>
<script type = "text/javascript">
puttitle('#txt[item]#', '#item#')
</script>
</cfloop>
考虑到textarr
中提到的长表格值列表,这个代码要少得多。此外,如果添加了另一个项目,我只需将其放入colidls
,代码就会自动执行此操作。
我对循环方法的问题在于它没有找到它所放入数据的所有id。它找到了一些并正确地将值放在应有的位置。但它没有找到其他人,当我检查时,它们被指示为空。
由于没有循环的第一个代码示例工作正常,因此必须正确形成具有其id的输入字段。我已检查所有数据是否正确传输到textarr
,colidls
完全正确,puttitle
正在接收应有的数据。
所以我感到困惑。为什么我的一些身份出现了?代码中有些东西需要收紧吗?我错过了一些微妙的JavaScript吗?欢迎任何建议。