Лучший способ определить четные / нечетные строки в таблице - PullRequest
7 голосов
/ 01 июня 2009

Скажем, у вас есть веб-страница со следующим примером кода:

<tr class="even">
    <td>something1</td>
    <td colspan="1">somthing1.1</td>
</tr>


<tr class="odd">
    <td>something2</td>
    <td><b>something2.1</b></td>
</tr>

<tr class="even">
    <td>something3</td>
    <td><b>something3.1</b></td>
</tr>

Они не в цикле, поэтому я должен явно сказать «четный» «нечетный». Позже, если мы решим добавить новую строку между чем-то2 и чем-то3, тогда нам нужно будет изменить «четный» и «нечетный» для остальных строк.

Есть ли способ в css сделать это автоматически в IE6?

В настоящее время это мой код CSS для четных

.headerTable tr.even {
    font-weight : bold;
    font-size : 9pt;
    font-family : Arial,Helvetica,sans-serif,Verdana,Geneva;
    background-color: #FFFFFF;
    height: 20px;
    color: #000000;
}

У меня уже был jQuery

Ответы [ 5 ]

13 голосов
/ 01 июня 2009

Попробуйте jQuery. Тогда вы можете просто сделать это:

   $("#myTable tbody tr:visible:even",this).addClass("even"); 
   $("#myTable tbody tr:visible:odd",this).addClass("odd");

Селектор ": visible" на самом деле не нужен, но когда вы фильтруете таблицу, скрывая несколько строк, метод все равно будет работать правильно.

12 голосов
/ 01 июня 2009

Способ сделать это - использовать правила nth-child (четное) и (нечетное). К сожалению, и это не должно вызывать удивления, IE6 не поддерживает это. Итак, у вас есть несколько вариантов:

A) Используйте Javascript, с очевидным недостатком: он не работает для людей с отключенным JS:

var rows = document.getElementById('mytable').getElementsByTagName('tr');
for(var x = 0; x < rows.length; x++) {
    rows[x].className = (x % 2 == 0) ? 'even' : 'odd';
}

Если вы ожидаете, что в вашем приложении потребуется более динамичное поведение на стороне клиента, вы можете проверить такую ​​библиотеку, как jQuery. Для только для этого это не нужно, но это облегчает работу с Javascript в разных браузерах. Вы бы сделали выше с jQuery, как показано в этом ответе.

В зависимости от вашей аудитории, Javascript может быть вполне приемлемым. Если это не так, то, возможно, вы можете ...

B) Упростите свой CSS и продолжайте делать это вручную. Вы можете пометить нечетные строки только классом, а затем сделать стиль по умолчанию для строки четным. Это сэкономит вам некоторую работу при перемещении вещей.

C) Генерировать строки программно. На самом деле архаично вводить подобные данные в фиксированную таблицу, если вы собираетесь обновлять ее достаточно часто, чтобы это стало проблемой. Я, очевидно, не обращаю внимания на ваши обстоятельства, но было бы тривиально сделать это каким-то образом в цикле с простым языком, таким как PHP.

D) Прекратить использование действительно устаревшего браузера. :) (Это только наполовину шутка, так как я уверен, что это вне вашего контроля)

8 голосов
/ 01 июня 2009

Наилучшим подходом будет псевдокласс :nth-child() .

Но, к сожалению, пока что это широко не поддерживается. Так что для этого вам, вероятно, потребуется использовать JavaScript.

5 голосов
/ 01 июня 2009

Использование четного / нечетного дочернего элемента jQuery реализация

0 голосов
/ 01 июня 2009

Да. Вы можете использовать JavaScript для запуска этих элементов и сброса их классов в соответствии с четным / нечетным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...