有什么方法可以在CFSET中显示多个CFIF?

时间:2013-05-14 15:09:09

标签: coldfusion coldfusion-8

目前我的代码工作得很好 -

<CFIF (DailyCount MOD 2) EQ 0>
<CFSET via = '<td style="background-color: DBEFB6;">#src#<br><font   color="blue">#get_info.csuseragent#</font></td>'>
<CFELSE>
<CFSET via = '<td>#src#<br><font color="blue">#get_info.csuseragent#</font></td>'>
</CFIF>

#get_info.csuseragent#字段中,它显示整个UA字符串,例如 - Mozilla / 5.0(Windows NT 6.1; WOW64; rv:23.0)Gecko / 20130406 Firefox / 23.0

我想将代码放在#get_info.csuseragent#标记的下方,以便只显示broswer / device。这通常是在这个设置之外,但我无法弄清楚如何让它在该单元格中显示。任何人都可以了解如何让这些CFIF语句出现在这个CFSET中吗?

<CFIF '#get_info.csuseragent#' contains "blackberry">Blackberry</CFIF> 
<CFIF '#get_info.csuseragent#' contains "iphone">iPhone</CFIF>
<CFIF '#get_info.csuseragent#' contains "ipad">iPad</CFIF> 
<CFIF '#get_info.csuseragent#' contains "android">Android</CFIF>  
<CFIF '#get_info.csuseragent#' contains "msie">IE</CFIF>
<CFIF '#get_info.csuseragent#' contains "firefox">Firefox</CFIF>
<CFIF '#get_info.csuseragent#' contains "chrome">Chrome</CFIF>
<CFIF '#get_info.csuseragent#' contains "opera">Opera</CFIF>
<CFIF '#get_info.csuseragent#' contains "Safari/534.53.10">Safari</CFIF>
<CFIF '#get_info.csuseragent#' contains "Safari/534.57.2">Safari</CFIF>
<CFIF '#get_info.csuseragent#' contains "Safari/533.21.1">Safari</CFIF>
<CFIF '#get_info.csuseragent#' contains "Safari/533.19.4">Safari</CFIF>
<CFIF '#get_info.csuseragent#' contains "Safari/533.18.5">Safari</CFIF>
<CFIF '#get_info.csuseragent#' contains "Safari/534.50">Safari</CFIF>

3 个答案:

答案 0 :(得分:3)

升级到CF 9+后,您可以使用三元运算符。我知道你不能在CF8中使用它,所以请考虑这是未来的一个提示。

三元最适用于简单的if-else条件,在我看来非常优雅。语法为condition ? true : false

<cfset myVar = findNoCase('blackberry', agent) ? "Blackberry" : "unknown">

您也可以像这样进行嵌套,但是如果使用<cfscript>if(){}elseif(){}else{};</cfscript><cfif><cfelseif><cfelse></cfif>可以提高性能,那么您最好使用<cfset myVar = findNoCase('blackberry', agent) ? "Blackberry" : findNoCase('iPhone', agent) ? "iPhone" : findNoCase('android', agent) ? "Android" : findNoCase('msie', agent) ? "Kill me now" : findNoCase('firefox', agent) ? "Firefox" : findNoCase('chrome', agent) ? "Chrome" : findNoCase('opera', agent) ? "Opera" : findNoCase('safari', agent)? "Safari" : "unknown"> 或{{1}}来提高可读性,更不用说我从未测试过嵌套的三元效率。就个人而言,我觉得这很容易阅读,但对于他/她自己......

{{1}}

答案 1 :(得分:2)

您不能在彼此之间嵌入标记,因此这是无效的语法:

<cfset myVar = <cfif something>"fred"<cfelse>"barney"</cfif>>

在您的情况下,首先要设置一个变量:

<cfif get_info.csuseragent contains "blackberry">
    <cfset agent = "Blackberry">
<cfelseif get_info.csuseragent contains "iphone">
    <cfset agent = "iPhone">
etc
<cfelse>
    <cfset agent = "Unknown">
</cfif>

然后使用它:

<cfset via = '<td style="background-color: DBEFB6;">#src#
<br><font color="blue">#agent#</font></td>'>

答案 2 :(得分:-1)

使用cfsavecontent代替cfset

请参阅以下文档,了解如何执行此操作。 http://cfquickdocs.com/?getDoc=cfsavecontent