Javascript 将变量名与Thymeleaf连接
我尝试连接变量名,但它无法按预期工作:Javascript 将变量名与Thymeleaf连接,javascript,thymeleaf,Javascript,Thymeleaf,我尝试连接变量名,但它无法按预期工作: <script type="text/javascript" th:inline="javascript">/*<![CDATA[*/ var jc[[${f.hash}]]; /*]]>*/</script> /**/ 结果:var jc'E4407CA0C7899E91403E94719D132C3C5D31C87CF5B3B60A1A7DAEC8DFF3360' 预期:var JCE4407CA0C7899E9
<script type="text/javascript" th:inline="javascript">/*<![CDATA[*/
var jc[[${f.hash}]];
/*]]>*/</script>
/**/
结果:var jc'E4407CA0C7899E91403E94719D132C3C5D31C87CF5B3B60A1A7DAEC8DFF3360'代码>
预期:var JCE4407CA0C7899E91403E94719D132C3C5D31C87CF5B3B60A1A7DAEC8DFF3360代码>看起来您想用一个变量定义的名称声明一个变量。我不知道为什么,但如果你真的想这么做:
你可以用
var hash = [[${f.hash}]];
eval('var jc'+hash);
这在严格模式下不起作用。如果强制执行某些安全策略,它也不会起作用
如果要在全局范围内创建变量,还可以使用
var hash = [[${f.hash}]];
window['jc'+hash] = undefined; //In browser application
global['jc'+hash] = undefined; //In node.js environment
或者,如果要在函数中声明变量
this['jc'+hash] = undefined;
注意:尽管JS sintax允许您使用所有这些选项,但无论您遇到什么问题,我都不建议您这样做。这被认为是一种不好的做法,我99%相信不用使用奇怪的技巧也可以做到。难以维护的代码并不酷。任何读过这篇文章的人都很难理解它为什么会出现 我在做一些工作时遇到了同样的问题,我需要创建一组具有不同名称的类似处理程序javascript对象
我在javascript代码中使用了以下内容
<script th:inline="javascript">
/*<![CDATA[*/
var handler[[${iter.index}]] = new Handler();
...
handler[[${iter.index}]].close();
/*]]>*/
</script>
/**/
他是这样的:
<script>
var handler0 = new Handler();
...
handler0.close();
</script>
<script>
var handler1 = new Handler();
...
handler1.close();
</script>
var handler0=新处理程序();
...
handler0.close();
var handler1=新处理程序();
...
handler1.close();
这正是我所需要的。通常内联脚本用于获取变量的值,而不是变量名本身f.hash
是一个字符串变量,因此它以“
作为前缀和后缀呈现。使用此值作为变量试图实现什么?是否确实需要使用“变量”名称声明变量?这样做的目的是什么?它应该可以工作,但我不喜欢使用eval。我的JS到处都有eval()
:/