如何在ColdFusion中动态输出变量

时间:2012-06-12 08:16:34

标签: dynamic properties coldfusion replace

我正在尝试使用javascript或coldfusion替换传递值的值。我们的想法是我们有一个输出网格值的模板。但显示的值需要由查询动态确定。到目前为止,我还没有想出任何好主意。

以下是我认为会起作用的一些例子(但没有)。它可以解释我想要做的事情:

<cfset StaticValue="DynamicValue">

<cfset DynamicValue="What I Want To Show">

<script type="text/javascript">
   document.getElementById("demo").innerHTML="<cfoutput>#StaticValue#</cfoutput>";
</script>

<cfoutput>#<span id="demo"></span>#</cfoutput>

3 个答案:

答案 0 :(得分:3)

要将现有字符串/变量用作变量名,您需要使用括号表示法。

在CF中,如果您没有明确确定变量范围,则会在Variables范围内创建变量,因此您可以这样做:

<cfset StaticValue="DynamicValue">

<cfset DynamicValue="What I Want To Show">

<!--- outputs value of Variables.DynamicValue --->
<cfoutput>#Variables[StaticValue]#</cfoutupt>

(这适用于所有范围/结构/查询/等)

注意:如果要在JavaScript字符串中输出变量,则需要将其包装在JsStringFormat(...)中以确保转义相应的字符。

答案 1 :(得分:2)

首先,这是错误的:

<cfoutput>#<span id="demo"></span>#</cfoutput>

您建议存在名为

的CF变量
<span id="demo"></span>

你的问题不明确,所以我的答案都不是,但我怀疑你是在尝试这样做:

<script type="text/javascript">
    <cfoutput>
        document.getElementById("demo").innerHTML="#StaticValue#";
    </cfoutput>
</script>

<span id="demo"></span>

当此JavaScript在页面上运行时,字符串“DynamicValue”将写入span#demo。

答案 2 :(得分:0)

您是否正在尝试比较它们是否相同,然后显示它们?

<cfset StaticValue="DynamicValue"> 

<cfif staticvalue is dynamicvalue>
   <cfset DynamicValue="What I Want To Show"> 

   <script type="text/javascript">
   <cfoutput>
   document.getElementById("demo").innerHTML="#DynamicValue#"; 
   </cfoutput>
   </script> 
</cfif>

不确定您在此处尝试做什么 - 因为这会导致# #

内的错误变量出错
<cfoutput>#<span id="demo"></span>#</cfoutput> 

应该是:

<cfoutput>
<span id="demo">
#dynamicvalue#
</span>
</cfoutput> 

如果您只是想要显示一个网址:

<cfoutput>
<span id="demo">
<a href="#dynamicvalue#">#dynamicvalue#</a>
</span>
</cfoutput>