XSLT,需要将javascript插入onclick处理程序

时间:2016-09-26 19:28:14

标签: javascript xslt

尝试了一堆不同的方法。下面(不起作用)基本上就是我想要做的。使用变量“defineClick”定义“onclick”代码,并将其动态插入div / onclick处理程序。 $ block变量定义在文件中。感谢

          <xsl:choose>
                <xsl:when test="txtBlockTarget='_blank'">
                    <xsl:variable name="defineClick">window.open('{$block}','_blank');</xsl:variable>
                </xsl:when>
                <xsl:otherwise>
                    <xsl:variable name="defineClick">location.href='{$block}';</xsl:variable>
                </xsl:otherwise>
            </xsl:choose>


            <div onclick="{$defineClick}" style="cursor: pointer;">

            .....more xsl.....

            </div>

2 个答案:

答案 0 :(得分:0)

add_filter('pmpro_register_redirect', '__return_false'); 中定义的变量的范围限定为其父级,并且在其外部不可用。

尝试将操作顺序颠倒为:

xsl:when

注意:当您使用变量编写<xsl:variable name="defineClick"> <xsl:choose> <xsl:when test="txtBlockTarget='_blank'">window.open('{$block}','_blank');</xsl:when> <xsl:otherwise>location.href='{$block}';</xsl:otherwise> </xsl:choose> </xsl:variable> <div onclick="{$defineClick}" style="cursor: pointer;"> ....more xsl..... </div> 时,我不确定您的意图;就目前而言,它只不过是一个毫无意义的字符串。但这将是一个单独问题的主题。

答案 1 :(得分:0)

谢谢迈克尔!有时答案比看起来简单得多(而且到达那里的痛苦)。以下代码有效。

<xsl:variable name="defineClick">
    <xsl:choose>
       <xsl:when test="txtBlockTarget='_blank'">window.open('<xsl:value-of select="$block" />');</xsl:when>
       <xsl:otherwise>location.href='<xsl:value-of select="$block" />'</xsl:otherwise>
    </xsl:choose>
</xsl:variable>

<div onclick="{$defineClick}" style="cursor: pointer;">
......