【问题标题】:Is there a way to apply an onclick event to multiple values in xslt?有没有办法将 onclick 事件应用于 xslt 中的多个值?
【发布时间】:2020-02-23 12:54:18
【问题描述】:

我正在尝试对从 xsl 中的 for-each 获得的多个值应用 onclick 事件。

我的代码显示 xml 文档中的所有“ville”(城市)。它还显示属于每个“ville”的所有“lycee”(高中),作为href。

当我点击这个特定的“lycee”时,我想要显示属于“lycee”的所有“eleves”(学生)的列表。为了做到这一点,我使用了一个与切换可见性的函数相关的 onclick 事件。 但是该功能(隐藏/显示)仅适用于第一个“lycee”。 当我点击另一个 lycee 时,它​​似乎只影响第一个 lycee 学生列表的可见性,而不是他们自己的列表。


<?xml version="1.0" encoding="UTF-8"?>

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

<xsl:key name="villeKey" match="eleve" use="ville" />
<xsl:key name="lyceeKey" match="eleve" use="lycee" />
<xsl:template match="/">
  <html>
  <style>


.hidden {
     display:none;
}


  </style>
<head>

<script type="text/javascript" >      

function toggle_visibility(id){
    var e = document.getElementById(id);
        if(e.style.display == 'block')
           e.style.display = 'none';
        else
           e.style.display = 'block';
   }


</script>
</head>
  <body>
  <h2>Villes</h2>
  <xsl:for-each select="eleves/eleve[count(. | key('villeKey',ville)[1]) = 1]">
    <xsl:sort select="ville" />
    <b style="color:Tomato;"><xsl:value-of select="ville" /> </b>,<br /><br />

                <xsl:for-each select="key('villeKey', ville)[count(. | key('lyceeKey',lycee)[1]) = 1]">
                <xsl:sort select="lycee" />
                      <a href="#" onclick="toggle_visibility('foo');">  <xsl:value-of  select="lycee" /> </a> <br /> 
                       <div id="foo" class='hidden' >
                <xsl:for-each select="key('lyceeKey', lycee)">

                            <xsl:sort select="specialite"/>
                           <p>  <xsl:value-of select="nom"/> &#160; <xsl:value-of select="prenom"/> </p>   

                        </xsl:for-each>
                       </div>

                </xsl:for-each><br /><br />

  </xsl:for-each>

  </body>
  </html>



</xsl:template>
</xsl:stylesheet>

```xsl

【问题讨论】:

    标签: html xslt onclick


    【解决方案1】:

    使用不同的 id 而不是相同的foo你用过,所以改变

           <a href="#" onclick="toggle_visibility('foo');">  <xsl:value-of  select="lycee" /> </a> <br /> 
           <div id="foo" class='hidden' >
    

           <a href="#" onclick="toggle_visibility('{generate-id()}');">  <xsl:value-of  select="lycee" /> </a> <br /> 
           <div id="{generate-id()}" class='hidden' >
    

    【讨论】:

      猜你喜欢
      • 2014-10-05
      • 2020-05-17
      • 1970-01-01
      • 2020-08-01
      • 2021-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多