我正在尝试将字符串从XSL传递给Javascript。我能够传递整数但它似乎不接受字符串。以下是我的代码的基本结构。如果我从“测试1”中删除“测试”,我会得到编号为1的警告框。但是一旦内部有文本,警报框就不会出现。
XML:
<TEST>
<TITLE>Test 1</TITLE>
<TEST>
<TEST>
<TITLE>Test 2</TITLE>
<TEST>
XSL:
<xsl:for-each select="//TEST">
<xsl:call-template name="TEST_TEMPLATE"/>
</xsl:for-each>
...
<xsl:template name="TEST_TEMPLATE">
<script type="text/javascript">
<![CDATA[var title = ]]><xsl:value-of select="./TITLE" /><![CDATA[;
alert(title);]]>
</script>
非常感谢您的帮助。
谢谢!
答案 0 :(得分:2)
您不是“将字符串从XSL传递到Javascript”。您的XSLT代码正在生成HTML,其中一部分恰好是脚本元素。很容易看出您生成的脚本元素包含文本:
var title = Test 1;
在执行时显然没有任何用处。
答案 1 :(得分:1)
你需要在标题周围引用。您刚刚输出的模板的字符串值,但它必须在引号中是有效的javascript。我认为这样可行:
<xsl:template name="TEST_TEMPLATE">
<script type="text/javascript">
<![CDATA[var title = "]]><xsl:value-of select="./TITLE" /><![CDATA[";
alert(title);]]>
</script>