|
|
|
| Умеет ли JS считать или перебирать строки в таблице?
Вообщем что нужно:
Нужно закрасить каждый второй ряд.
Снять вообщем нагрузку с сервера.
А у кого нет JS пусть пеняет на себя.. | |
|
|
|
|
|
|
|
для: valenok
(15.10.2006 в 09:21)
| | Умеет-умеет.
Каждому ряду таблицы при генерации страницы сервером нужно присвоить собственный id (например, row_1, row_2, row_3, ..., row_n), с помощью JavaScript создать массив из этих элементов и потом, четным элементам (то есть, тем, у которых цифра после "row_ " делится на 2 без остатка) присваивать один цвет, а нечетным - другой.
Если таблица большая, то за информацией к размышлению могу посоветовать сходить вот сюда: http://www.artlebedev.ru/tools/technogrette/js/lookup-tables/
А вообще я бы посоветовал обойтись без яваскриптов и предложил бы использовать css. Тогда все просто: заранее в отдельном файле с описанием стилей пишем 2 класса (можно классами, можно идентификаторами. Идентификаторы занимают чуть меньше места), у одного имя row_1, у другого row_2. И при генерации таблицы на php в цикле рядам последовательно приписываем либо первый идентификатор, либо второй.
Вот пример таблицы стилей:
<style>
#table {width: 100%; border-collapse: collapse;}
#table #row_1 {background-color: gray;}
#table #row_2 {background-color: white;}
#table td {width: 100%; border: 1px solid gray;}
</style>
|
А вот код php:
<table id="table" cellpadding=0 cellspacing=0>
<?
$k="1";
for ($i=0; $i<100; $i++) {
echo "<tr id=\"";
if ($k=="1") {echo "row_1"; $k="2";}
else {echo "row_2"; $k="1";}
echo "\"><td>This is your text</td></tr>";
}
?>
</table>
|
Как видно, нагрузка на сервер минимальна (ну, если конечно, у тебя не Яндекс с 3 миллионами посетителей в день). И совет: чтобы у юзера страница грузилась быстрее, нужно весь CSS выносить в отдельный файл и подключать его в хедере страницы. И только при крайней необходимости пользоваться описанием стилей внутри элементов. | |
|
|
|
|
|
|
|
для: aexb
(15.10.2006 в 10:28)
| | А почему присваивание стиля через ID, а не через классы? Ведь ID по идее должен содержать уникальный идентификатор. | |
|
|
|
|
|
|
|
для: targa
(15.10.2006 в 15:31)
| | Можно обойтись без нагрузки на сервер, если из TBODY поприсваивать каждому чётному childNodes[] свой класс, у которого будет цвет, отличный от основного.
#t1 td{background-color: ...}
.row2{background-color: ...}
|
<table id =t1> ... | |
|
|
|
|
|
|
|
для: 12345
(15.10.2006 в 15:40)
| | Ну надо же, пока писал - забыл.
Надо дописать: без всяких уникальных полей.
А с классами само собой.
Каждой второй строке другой класс (так я красить собрался)
Только вот как это сделать с такой таблицей:
<table>
<tr><td>td1</td><td>td2</td></tr>
<tr><td>td1</td><td>td2</td></tr>
<tr><td>td1</td><td>td2</td></tr>
<tr><td>td1</td><td>td2</td></tr>
</Table>
|
C меньшей нагрузкой проще сразу класс присваивать а не уникальный id
Давай ещё раз про childNodes | |
|
|
|
|
|
|
|
для: valenok
(15.10.2006 в 18:14)
| | Вообщем вся идея чтоб без уникальных полей.
Ну или уникально обозначить только таблицу а не каждыу строчку | |
|
|
|
|
|
|
|
для: valenok
(15.10.2006 в 18:21)
| |
<style>#t1{background-color: blue}
.row0{background-color: green}
.row1{background-color: red} </style>
<table id=t1>
<tr><td>td1</td><td>td2</td></tr>
<tr><td>td1</td><td>td2</td></tr>
<tr class=row2><td>td1</td><td>td2</td></tr>
<tr><td>td1</td><td>td2</td></tr>
</Table>
<script>onload=function(){tt1=document.getElementById('t1')
for(i=0;i<tt1.childNodes[0].childNodes.length;i++){
tt1.childNodes[0].childNodes[i].className='row'+i%2
}}</script>
|
| |
|
|
|
|
|
|
|
для: 12345
(15.10.2006 в 21:53)
| | Ну вот спасибо | |
|
|
|