2011-05-29 47 views
9

我正在尝试将xsl变量值传递给javascript函数。如何将xsl变量值传递给javascript函数

我的XSL变量

<xsl:variable name="title" select="TITLE" /> 

我传递的价值这样

<input type="button" value="view" onclick="javascript:openPage('review.html?review=$title')" /> 

我曾尝试在不同的可能的方式上面的代码,但我得到的错误。

<script type="text/javascript"> 
        function jsV() { 
        var jsVar = '<xsl:value-of select="TITLE"/>'; 
        return jsVar; 
        } 
       </script> 

       <input type="button" value="view" onclick="javascript:openPage('javascript:jsV()')" /> 

I also tried 

<input type="button" value="view" onclick="javascript:openPage('review.html?review='\'' 
    +$title+'\')" /> 

有没有其他的方法,或者我不是做对了吗?

+3

你是不是“XSLT变量的值传递给Javascript功能”。 XSLT没有调用Javascript。它使用嵌入式Javascript生成HTML。你需要了解这个处理模型! – 2011-05-29 21:03:11

+0

明白了。非常感谢你。我不确定是否有可能改变问题的标题,但愿我能。 – Govnah 2011-05-30 20:11:51

回答

4

你忘了{}:

<input type="button" value="view" onclick="javascript:openPage('review.html?review={$title}')" /> 
+1

它不显示任何值。大括号内的任何内容都不会出现。 – Govnah 2011-05-29 11:12:51

+0

非常感谢你..工作正常!...在我测试你的代码之前,我正在玩变量。我做了一些改变,我忘了它,这就是为什么它不工作。 – Govnah 2011-05-29 15:51:40

4

这里是一个工作示例如何做到这一点:

这种转变:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="/*"> 
    <xsl:variable name="vTitle" select="TITLE"/> 

    <input type="button" value="view" 
    onclick="javascript:openPage('review.html?review={$vTitle}')" /> 
</xsl:template> 

</xsl:stylesheet> 

当这个XML文档的应用(没有提供XML文件!):

<contents> 
<TITLE>I am a title</TITLE> 
</contents> 

产生想要的,正确的结果

<input type="button" value="view" 
onclick="javascript:openPage('review.html?review=I am a title')"/> 

说明:使用AVT(属性值模板)。

+0

非常感谢你的例子。帮了很多忙。 – Govnah 2011-05-29 15:54:28

+0

@Govnah:不客气。 – 2011-05-29 16:39:16

2

也可以通过做从JavaScript代码访问XSL变量在同一个文件中的以下内容:

<xsl:variable name="title" select="TITLE"/>

<script type="text/javascript"> 
    function getTitle() { 
     var title = <xsl:value-of select="$title"/>; 
     return title; 
    } 
</script> 
相关问题