这是我现在在zhtml文件中的内容:
<zscript>
String sample="123456";
</zscript>
<script>
function called(){
var jsample=${sample};
alert(jsample);
}
</script>
如果sample是一个int或Boolean或一个只有数字的字符串,它工作正常。我调用该函数,弹出警告框,显示值,是一系列数字还是真/假。
但是如果样本包含一个字符,比如
String sample="q123456";
然后它停止工作。我调用该函数,但没有任何反应,它停在
var jsample=${sample};
我很好奇是什么造成的。虽然感觉像是基本的javascript。
非常感谢。
答案 0 :(得分:2)
是的,它是基本的JavaScript。但是你必须想象在zul解析器解析${sample};
之后代码是什么样的:
var jsample=123456; // jsample is a number, value 123456
var jsample=false; // jsample is a boolean, value false
var jsample=q123456; // jsample is something, value whatever q123456 is
您可以看到 JavaScript认为q123456
是一个无法找到的变量名称。它会告诉您是否打开控制台,例如Chrome说:&#34;未捕获的ReferenceError:asdasd未定义&#34;。
要解决此问题,请将zScript更改为
var jsample="${sample}";
将sample
包装成一个字符串,因此生成的JavaScript代码现在看起来像这样:
var jsample="123456";
var jsample="false";
var jsample="q123456";
如果您需要特定类型,JavaScript可能会自动转换jsample
,或者您使用isNaN
等检查手动转换。