Каков самый простой способ чередовать цвета строк в таблице HTML (также известный как чередование). Большинство моих таблиц создано в шаблонах XSL, подобных приведенным ниже, с таблицей, заголовком и т. д., Определенными в другом шаблоне.
<xsl:template match = "typ:info">
<tr>
<td>
<xsl:value-of select = "typ:dateAccessed" />
</td>
<td>
<xsl:value-of select = "typ:loginId" />
</td>
</tr>
</xsl:template>
Я предпочитаю использовать чередующиеся классы для элементов.






Если вам необходимо создать жестко запрограммированные цвета в HTML:
<xsl:template match = "typ:info">
<xsl:variable name = "css-class">
<xsl:choose>
<xsl:when test = "position() mod 2 = 0">even</xsl:when>
<xsl:otherwise>odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class = "{$css-class}">
<td>
<xsl:value-of select = "typ:dateAccessed" />
</td>
<td>
<xsl:value-of select = "typ:loginId" />
</td>
</tr>
</xsl:template>
В современных браузерах гораздо лучше использовать CSS и tr:nth-child(odd).
Это приводит к меньшим хлопотам на стороне XSLT, гораздо более чистой разметке HTML - и он совместим с сортировкой и фильтрацией таблиц на стороне клиента.
Используйте XSL: When and compare position mod 2, чтобы получить нечетные или четные строки для изменения классов при необходимости, например:
<xsl:choose>
<xsl:when test = "position() mod 2 = 1">
<td class = "odds">blah</td>
</xsl:when>
<xsl:otherwise>
<td class = "even">blah</td>
</xsl:otherwise>
</xsl:choose>
Обновлено: Правильно меняю четность / нечетность вздох
Можем ли мы вместо этого изменить только имя класса, когда мы можем выбрать внутри переменной, чтобы разрешить изменение ее внутреннего значения. Что-то вроде этого:
<xsl:variable name = "myDemoClass" >
<xsl:choose>
<xsl:when test = "position() mod 2 = 0">
<xsl:text>myDemoClass</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>myDemoClass otherClass</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
Благодаря этому мы можем изменить имя переменной, а затем мы можем изменить, например, содержимое класса div.
<div class = "{$myDemoClass}">
С Уважением!
Вы также можете использовать css3.
tr:nth-child(odd) { background: #ff0000; }
Поддерживается с IE9 в течение некоторого времени всеми другими браузерами.
В своем коде я пытался изменить значение переменной xsl и сделал что-то вроде этого. В конце концов, я решил, что меня тоже можно использовать для решения этой «четно-нечетной» итерации. Я знаю, что это решено, мужчины, но это немного другой подход к приготовлению того же самого. Допустим, я хочу больше сотрудничать, а вы?