XSL + Java脚本问题...无法从xsl文件调用javascript函数

时间:2009-04-28 04:16:50

标签: javascript xml

我是XSL世界的新手,并且在使用XSL方面遇到的问题很少

<?xml version="1.0"?>

<xsl:stylesheet xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">

<xsl:template match="/">
    <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
        <head>
        <link rel="stylesheet" type="text/css" href="mycss.css" />
        <script language="javascript"  type="text/javascript" >
                      <xsl:text></xsl:text>
        </script>

        </head>
    <body>

    <table>
        <tr bgcolor='yellow' onMouseover="changeColor(event, 'red');"> MYTEXT 
        </tr>
    </table>
        </body>
    </html>
</xsl:template>
</xsl:stylesheet>

和我的XML文件是

<COUNTRY>
        <CITY>X</CITY>
        <CITY>Y</CITY>
</COUNTRY> 

我的Javascript文件是

   function changeColor(e,highlightcolor){
      source=ie? event.srcElement : e.target
      source.style.backgroundColor=highlightcolor
   }

问题不是鼠标悬停,浏览器中的颜色没有变化........

4 个答案:

答案 0 :(得分:2)

在你的XSL中我没有看到包含的任何JavaScript文件(.js),也没有看到你提到的javascript函数。其次,你在函数changeColor中使用的ie变量在哪里?

通过在浏览器上执行查看源来检查生成的html,看看是否一切正确。在函数中添加一些警报以确认它是否实际被调用。

答案 1 :(得分:0)

我建议您使用警告来更新您的changeColor功能,以检查您的情况。即,在函数的第一行之前:

alert("IE?" + ie);

然后在你的第一行之后:

alert("Src: " + source);

然后在更改颜色的行之前:

alert("style: " + source.style);
alert("bgclr: " + source.style.backgroundColor);

显然,你可以用Javascript调试器做类似的事情,但我假设你没有使用它。

答案 2 :(得分:0)

如果甚至没有显示您的警报(上面的jsight建议),请执行以下操作: 如果您的javascript不在xslt中,而是在html中,请按以下方式调用该函数:

onMouseover="javascript:changeColor(event, 'red');"

如果您的脚本位于xslt文件中:

  1. 在xsl:stylesheet中,指定

    xmlns:myscript ='http://www.example.com/myscript'

  2. 将脚本部分声明为

       function changeColor(e,highlightcolor){   源=即? event.srcElement:e.target   source.style.backgroundColor = highlightcolor}

  3. 将函数调用为:

    onMouseover =“myscript:changeColor(event,'red');”

答案 3 :(得分:0)

firefox中没有警告....我怀疑是否正在调用函数。