我正在使用ColdFusion将英国邮政编码拉入数组,以便在Google地图上显示。这是从SQL数据库动态发生的,因此数字的范围可以是1到100 +
脚本效果很好,然而,在IE(呻吟)中,它决定在加利福尼亚的某个地方显示离线的一个点。
我在之前的webapp中修复了这个问题,这是由于每个数组项之间的逗号仍然存在于最后。在Firefox,Safari等中运行良好,但不适用于IE。
但是,那个人正在使用10集记录,所以很容易解决。
我只需要一个小的if语句来包裹我的逗号,以便在它到达最后一条记录时隐藏它。我似乎无法做对。任何提示/建议?
这是有问题的代码行:
var address = [<cfloop query="getApplicant"><cfif getApplicant.dbHomePostCode GT ""><cfoutput>'#getApplicant.dbHomePostCode#',</cfoutput></cfif> </cfloop>];
希望有人可以帮助解决这个相当简单的请求。我在办公室度过了糟糕的一天!
答案 0 :(得分:5)
var address = [#ListQualify(ValueList(getApplicant.dbHomePostCode), "'")#]
我注意到代码中有<cfif getApplicant.dbHomePostCode GT "">
。
使用ListQualify()
空的(空或空字符串)后置代码将不显示在输出中,因为ColdFusion列表函数忽略空列表元素。
编辑:此答案的上一版本表明空元素会显示在ListQualify()
的结果中。这是不正确的,但前两个注释引用了这个初始修订。
答案 1 :(得分:1)
我的方法略有不同,你必须做更少的设置,也不必迭代;这一切都完成了cfloop标签。
var address = [
<cfloop from="1" to="#getApplicant.recordcount#" index="i">
<cfif getApplicant.dbHomePostCode GT "">
<cfoutput>
'#getApplicant.dbHomePostCode[i]#'
<cfif i lt getApplicant.recordcount>,</cfif>
</cfoutput>
</cfif>
</cfloop>
];
这里没有休息时间,你应该可以将它粘贴到你的页面中,它会起作用。
var address = [<cfloop from="1" to="#getApplicant.recordcount#" index="i"><cfif getApplicant.dbHomePostCode GT ""><cfoutput>'#getApplicant.dbHomePostCode[i]#'<cfif i lt getApplicant.recordcount>,</cfif></cfoutput></cfif></cfloop>];
答案 2 :(得分:0)
试试这个
var address = [<cfset i=0><cfloop query="getApplicant"><cfset i=i+1><cfif getApplicant.dbHomePostCode GT ""><cfoutput>'#getApplicant.dbHomePostCode#'<cfif i LT getApplicant.RecordCount>,</cfif></cfoutput></cfif></cfloop>];
上面的代码使用Integer(i)来存储循环中的位置,当输出时,逗号检查以查看i是否小于SQL结果的大小。这样,如果它不是结果集的最后一行,它将只输出逗号。
答案 3 :(得分:0)
@Tomalok有一个很好的答案。这可能就是我要用的。
在看到他的回答之前,我的答案可能就是这样:
<cfset codelist = "">
<cfloop query="getApplicant">
<cfif len(dbHomePostCode)>
<cfset codelist = listappend("'#codelist#'", dbHomePostCode)>
</cfif>
</cfloop>
<cfset address = "[#codelist#]">
答案 4 :(得分:0)
使用query.recordcount可以确定您是否位于查询的最后一行并相应地调整输出。整体Tomalak和Ben Doom都有很好的答案,但是这个答案显示了如何使用你原来的思路解决问题。
<cfset var address = "[">
<cfloop query="getApplicant">
<!--- If not the last row, include the comma --->
<cfif getApplicant.dbHomePostCode NEQ "" AND getApplicant.currentrow NEQ getApplicant.recordcount>
<cfset address = address & getApplicant.dbHomePostCode & ",">
<!--- If last row, omit the comma --->
<cfelseif getApplicant.dbHomePostCode NEQ "">
<cfset address = address & getApplicant.dbHomePostCode>
</cfif>
</cfloop>
<cfset address = address & "];">
<!--- Now we output the string all at once --->
<cfoutput>#address#</cfoutput>