ace*_*man 0 coldfusion if-statement
<cfoutput query="allOutcomes" maxrows="10">
<div class="galleryOutcome">
<cfset thisPhoto = uploads.listPhotobyOutcomeID(#outcomeID#)>
<h3>#lastname#, #firstname#</h3>
<cfloop query="thisPhoto" >
<cfif isdefined(filename)>
<div class="gallerythumb">
<a href="javascript: thumbExpand('#fileName#')"><img src="documents/uploads/PHOTOS/#filename#" alt="#filename#" border="0" width="200"/></a>
</div>
<cfelse>
<p> NO PHOTOS </p>
</cfif>
</cfloop>
</div><div class="clear"></div><br /><br />
<div onClick="javascript: thumbHide()" id="thumbexpand" style="display:none; left:670px;; height:0px; position:fixed; top:100px;">
</div>
</cfoutput>
Run Code Online (Sandbox Code Playgroud)
我一直试图这样做,如果没有与他们相关的照片,#lastname#和#firstname#就不会显示.我尝试做一个cfif,检查文件名是否已定义,但似乎没有用.它返回一个错误说:
"函数IsDefined的参数1,现在(文件路径到图像),必须是语法上有效的变量名."
有小费吗?
谢谢
Lei*_*igh 16
首先,IsDefined期望变量的名称.当您省略引号或使用#符号时,您将传入变量值.正确的语法是:
<cfif IsDefined("variableName")>
Run Code Online (Sandbox Code Playgroud)
但是,查询列始终存在.所以无论如何它都不会产生正确的结果.相反,你应该测试是否FileExists.如果需要,请使用expandPath生成绝对物理路径
<cfif FileExists( ExpandPath("/path/to/images/"& thisPhoto.fileName) )>
it exists. do something ...
<cfelse>
no photo
</cfif>
Run Code Online (Sandbox Code Playgroud)
编辑:作为评论中提到的Busches,通常structKeyExists是首选,IsDefined因为它的结果更精确.有些人可能会说它也有更好的表现.但在大多数情况下,任何差异都可以忽略不计.提高准确度是IMO更令人信服的原因.
<cfif structKeyExists( scopeOrStruct, "variableName")>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
208 次 |
| 最近记录: |