2013-04-22 5 views
0

Я пытаюсь сохранить счетчик, где я нахожусь в своем цикле, чтобы я мог переключать некоторые из моих строк таблицы.Как использовать XSLT для каждого счетчика

Это счетчик, который я использую для каждой строки.

<xsl:variable name="i" select="position()"/> 

Проблема, которую я имею, что я не знаю, как назначить i как мой строк идентификатор, так что каждая таблица в моей странице можно открывать и закрывать свои собственные строки вместо одной кнопки включения и выключения каждая строка в каждой таблице.

Это то, что мой обмен на каждый цикл выглядит следующим образом

<xsl:for-each select="Talents_Passive"> 

    <xsl:variable name="i" select="position()"/> 

    <div style="font-family:Calibri, Arial; font-size:5pt"> 
     <xsl:if test="Talent != ''"> 
      <table border="0" width="550"> 

       <tr> 
        <td bgcolor="#A0A0A0" width="80%"> 
         <a href="#" onClick="SwitchMenu(this, {$i})">Toggle Form?</a> <b id="toggle"><xsl:value-of select="Talent"/></b></td> 
        <td bgcolor="#A0A0A0" width="20%" align="center"> 
         <xsl:value-of select="Cost"/><xsl:text> - </xsl:text><xsl:value-of select="Type"/></td> 
       </tr> 

       <xsl:if test="Prerequisite != ''"> 
        <tr> 
         <td colspan="2" bgcolor="#C0C0C0"><b>Prerequisite: </b><xsl:value-of select="Prerequisite"/></td> 
        </tr> 
       </xsl:if> 

       <tr> 
        <td colspan="2" bgcolor="#C0C0C0"> 
         <xsl:if test="Action != ''"> 
          <b>Action: </b><xsl:value-of select="Action"/> 
         </xsl:if> 
         <xsl:if test="Range != ''"> 
          <xsl:text> </xsl:text> <b>Range: </b><xsl:value-of select="Range"/> 
         </xsl:if> 
         <xsl:if test="Cost != ''"> 
          <xsl:text> </xsl:text> <b>Cost: </b><xsl:value-of select="Cost"/> 
         </xsl:if> 
        </td> 
       </tr> 

       <xsl:if test="Action != ''"> 
        <tr> 
         <!-- I would like to open and hide this row and give control to each table that is created in this for-each loop --> 
         <td colspan="2" bgcolor="#E0E0E0" id="{$i}" style="display:none;"><b>Action: </b><xsl:value-of select="Action"/></td> 
        </tr> 
       </xsl:if> 


      </table> 
     </xsl:if> 
    </div> 

</xsl:for-each> 

Так что я хотел бы знать, как получить текущее значение i и назначить, что мои строки <td id="i"> или что-то вдоль этих линий.

ответ

1

Похоже, что вы должны переместить id и style="display:none;" с td на tr.

<tr id="sh_{$i}" style="display:none;"> 

<!-- I would like to open and hide this row and give controll to each table that is creted in this for each loop --> 
        <td colspan="2" bgcolor="#E0E0E0" ><b>Action: </b><xsl:value-of select="Action"/></td> 
    </tr> 

Ваша функция javascript имеет, чем искать идентификаторы типа «sh_1».

+0

к несчастью, когда я использую ваш код, вся страница отображается пустым. – HurkNburkS

+0

Хм, так оно и работало (потому что вы приняли ответ)? Или проблема в том, что страница пуста? –

+0

yep, он работал, я не изменил идентификатор onclick .. и мне пришлось вытащить sh_ из id .. тогда он работал отлично. – HurkNburkS

Смежные вопросы