2

我有以下代码:(我使用 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>

关于如何正确格式化的任何提示?

4

2 回答 2

1

更紧凑的解决方案

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

此外,wirhinonclick属性使用:

getElementById({@ID})
于 2012-07-19T12:10:12.423 回答
0

您需要在希望放置属性的元素中使用命令<xsl:attribute>...

<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>

更新基于 OP 的评论...

正如我上面所说,<xsl:attribute必须在您希望使用该属性的元素内......事实上它必须是之后的第一个命令

代替...

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

您应该有(用换行符格式化以在此处查看)...

<div>
  <xsl:attribute name="id"><xsl:value-of select="@ID"/></xsl:attribute>
  <xsl:value-of select="@Announcement"/>
</div>
于 2012-07-19T08:28:14.863 回答