Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подсчёт строк в таблице
 
 автор: valenok   (15.10.2006 в 09:21)   письмо автору
 
 

Умеет ли JS считать или перебирать строки в таблице?
Вообщем что нужно:
Нужно закрасить каждый второй ряд.
Снять вообщем нагрузку с сервера.
А у кого нет JS пусть пеняет на себя..

   
 
 автор: aexb   (15.10.2006 в 10:28)   письмо автору
 
   для: 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 выносить в отдельный файл и подключать его в хедере страницы. И только при крайней необходимости пользоваться описанием стилей внутри элементов.

   
 
 автор: targa   (15.10.2006 в 15:31)   письмо автору
 
   для: aexb   (15.10.2006 в 10:28)
 

А почему присваивание стиля через ID, а не через классы? Ведь ID по идее должен содержать уникальный идентификатор.

   
 
 автор: 12345   (15.10.2006 в 15:40)   письмо автору
 
   для: targa   (15.10.2006 в 15:31)
 

Можно обойтись без нагрузки на сервер, если из TBODY поприсваивать каждому чётному childNodes[] свой класс, у которого будет цвет, отличный от основного.

#t1 td{background-color: ...}
.row2{background-color: ...}



<table id =t1> ...

   
 
 автор: valenok   (15.10.2006 в 18:14)   письмо автору
 
   для: 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:21)   письмо автору
 
   для: valenok   (15.10.2006 в 18:14)
 

Вообщем вся идея чтоб без уникальных полей.
Ну или уникально обозначить только таблицу а не каждыу строчку

   
 
 автор: 12345   (15.10.2006 в 21:53)   письмо автору
 
   для: 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>

   
 
 автор: valenok   (15.10.2006 в 23:48)   письмо автору
 
   для: 12345   (15.10.2006 в 21:53)
 

Ну вот спасибо

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования