如何使用xsl值作为onclick的ID

时间:2012-07-19 08:25:31

标签: javascript xml xslt

我有以下代码:(我使用jquery)

<a href="javascript:" 
  onclick="document.getElementById('TEST').style.display = ( (document.getElementById('TEST').style.display == 'block') ? 'none' : 'block' );">
  <xsl:value-of select="$DisplayTitle"/>
</a>

<div id="TEST" style="display:none">
  <xsl:value-of select="@Announcement" />
</div>

这很好用。但我正在拉多个元素,所以hide的第一个公告的唯一显示是合乎逻辑的,因为这是第一个带ID的元素:TEST

现在我希望您使用<xsl:value-of select="@ID" />作为elementbyid 但我不能把它放在引号之间。以下格式不正确

<a href="javascript:" 
  onclick="document.getElementById('<xsl:value-of select="@ID" />').style.display = ( (document.getElementById('TEST').style.display == 'block') ? 'none' : 'block' );">
    <xsl:value-of select="$DisplayTitle"/>
</a>

有关如何格式化此正确的提示吗?

2 个答案:

答案 0 :(得分:1)

更紧凑的解决方案

<div id="{@ID}">
    <xsl:value-of select="@Announcement"/>
</div>

此外,在onclick属性中使用:

getElementById({@ID})

答案 1 :(得分:0)

您需要使用} 中希望放置属性的元素中的 ...

<xsl:attribute>

更新根据OP的评论...

如上所述,<a href="javascript:"> <xsl:attribute name="onclick">document.getElementById('<xsl:value-of select="@ID" />').style.display = ( (document.getElementById('TEST').style.display == 'block') ? 'none' : 'block' );</xsl:attribute> <xsl:value-of select="$DisplayTitle"/> </a> 必须是 WITHIN 您希望使用该属性的元素...实际上它必须是 FIRST 命令之后。

而不是......

<xsl:attribute

你应该(用换行格式在这里查看)......

<xsl:attribute name="id"><div id="<xsl:value-of select="@ID" />"><xsl:value-of select="@Announcement" /></div></xsl:attribute>