如何使用ColdFusion按条件从图片列表中选取对应图片展示
问题原因
你写的<cfoutput>标签嵌套在HTML标签的src属性值内部,ColdFusion的模板解析器不会识别这种内嵌在属性里的CFML标签,所以变量#w#没有被正确解析输出。
解决方法
方案1:将整个img标签包裹在cfoutput标签内(最常用)
<cfif p eq 1> <cfset w="image1.png"> <cfelseif p eq 2> <cfset w="image2.png"> <cfelseif p eq 3> <cfset w="image3.png"> </cfif> <cfoutput> <img class="class1" src="#w#"> </cfoutput>
方案2:仅把属性值用cfoutput包裹,给属性值加引号
注意要把整个属性值用双引号包起来,再把动态输出的部分放在cfoutput里:
<img class="class1" src="<cfoutput>#w#</cfoutput>">
代码优化建议
你当前的分支判断逻辑可以简化,因为参数p的值和图片文件名的序号完全对应,不需要写多个分支判断,同时可以补充参数校验避免变量不存在报错:
<!-- 校验URL参数,默认值设为1,限制数值范围在1-3之间 --> <cfparam name="url.p" type="numeric" default="1"> <cfset p = clamp(url.p, 1, 3)> <cfset w = "image#p#.png"> <cfoutput> <img class="class1" src="#w#"> </cfoutput>
内容的提问来源于stack exchange,提问作者Ruth
相关产品推荐
相关产品推荐

