我正在处理其他人编写的代码。据我所知,它不正确,但我没有看到任何错误,所以现在我不确定自版本 8 以来是否发生了某些变化。
代码如下 & 我想知道你是否可以将 CFML 与 Javascript 代码一起使用
<script language="JavaScript" type="text/JavaScript" >
var x = 2;
<cfif url.new = true>var x = 5 </cfif>
</script>
最佳答案
您不能在 JavaScript 本身中使用 CFML,因为 ColdFusion 在服务器上运行,而 JavaScript 在客户端上运行。但是,您需要考虑 CFML 的工作原理,CFML 代码在服务器上处理,然后将输出传递给客户端。因此,就您而言,您提供的示例是有效的。 CFML 将在服务器上进行处理,并生成两个输出之一并将其传递回客户端。
注意:您没有包含所有代码,因此我假设在此之前还有其他代码检查 url.new
变量是否存在。否则,如果未在 URL 中传递 new
参数,则会抛出变量不存在的错误。
如果 URL 不包含名为“new”的参数; http://www.yourdomain.com/somepage
或者"new"参数确实存在,但它的值不被认为是“真”; http://www.yourdomain.com/somepage?new=false
那么输出将是:
<script language="JavaScript" type="text/JavaScript" >
var x = 2;
</script>
请注意,生成的 JavaScript 中“x”的值为 2。
如果 URL 确实包含一个名为“new”的参数并且它的值被认为是“true”; http://www.yourdomain.com/somepage?new=true
那么输出将是:
<script language="JavaScript" type="text/JavaScript" >
var x = 2;
var x = 5
</script>
请注意,生成的 JavaScript 中“x”的值将为 5,但是行尾还缺少一个分号,因此您的示例可能会引发 JavaScript 错误。
请注意,我还提到了“如果值被认为是真或假”。在ColdFusion中, bool 表达式、True、非零数和字符串“Yes”、“1|”、“True”是等价的;和 False、0,字符串“No”、“0”和“False”是等价的。 bool 计算不区分大小写。例如,True、TRUE 和 true 是等价的。所以在你的例子中,http://www.yourdomain.com/somepage?new=1也会被认为是真的。
关于javascript - Javascript 中的 CFML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27785565/