MootoolsРаскрашиваем таблицу «зеброй»

Опубликовано 15 марта 2009 Комментарии (12)

image
Полосатые таблицы — также известные как «конфетные» или «зебровые» таблицы, а также как полутень — это применение слабого оттенка к чередующимся строкам или рядам в таблицах данных или формах.
Техника полосатых таблиц особо эффективна для больших таблиц с данными, это помогает быстрее находить нужную информацию и меньше напрягает глаза. Теперь разберём как сделать это с помощью mootools.

Этап I

Загружаем библиотеку с официального сайта, подключаем её на страницу.
<script language="JavaScript" type="text/javascript" src="путь_до_файла/mootools-1.2.1-core-yc.js"></script>

Этап II

Затем, ниже создаём событие которое выполниться сразу после того как загрузиться страница.
<script language="JavaScript" type="text/javascript" src="путь_до_файла/mootools-1.2.1-core-yc.js"></script>
<script language="JavaScript" type="text/javascript">
window.addEvent('domready', function() {

});
</script>

Этап III

Теперь нужно выбрать все таблицы в массив, которые имеются на странице и обойти их.
<script language="JavaScript" type="text/javascript" src="путь_до_файла/mootools-1.2.1-core-yc.js"></script>
<script language="JavaScript" type="text/javascript">
window.addEvent('domready', function() {
    document.getElements('table').each(function(table) {

    });
});
</script>
В данном коде в переменную table будут по очереди передаваться все найденные таблицы.

Этап IV

Имея таблицу мы можем пройтись по всем строкам таблицы и применить к ним разные классы.
<script language="JavaScript" type="text/javascript" src="путь_до_файла/mootools-1.2.1-core-yc.js"></script>
<script language="JavaScript" type="text/javascript">
window.addEvent('domready', function() {
    document.getElements('table').each(function(table) {
        var i = 0;
        table.getElements('tr').each(function(tr) {
                       
            i++;
            if (tr.getElement('th') == null) {
                               
                tr.addClass((i%2)==0 ? "odd" : "even");
            }
        });
    });
});
</script>
Немного пояснений, считываем все строки в массив из каждой таблицы, затем обходим этот массив. Используя счётчик i мы сможем определить какая строка чётная а какая нечётная, и исходя из этого присвоить строкам разные классы, а к заголовкам таблицы эти действия не распространяются.

Этап V

Добавим немного CSS.
<style>
table tr.even {
    background-color:#EEEEEE;
}
table tr.odd {
    background-color:#FFFFFF;
}</style>

Теперь у нас все таблички полосатые, раскрасить вы их сможете как захотите.

Примечание

Если нужно сделать полосатыми таблицы только с определённым классом, то нужно в строке #4 сделать небольшие изменения.
document.getElements('table[class=table]').each(function(table) {

В данном случае обработаны будут только те таблицы у которых class=«table».

UPD:


После подсказки Alexander, можно упростить скрипт:
<script language="JavaScript" type="text/javascript" src="путь_до_файла/mootools-1.2.1-core-yc.js"></script>
<script language="JavaScript" type="text/javascript">
window.addEvent('domready', function() {
    $$('tr:even').addClass("even");
    $$('tr:odd').addClass("odd");
});
</script>

Но если вам нужно исключить загаловки таблиц то нужно немного дополнить код:
<script language="JavaScript" type="text/javascript" src="путь_до_файла/mootools-1.2.1-core-yc.js"></script>
<script language="JavaScript" type="text/javascript">
window.addEvent('domready', function() {
    $$('tr:even').each(function(tr) {
        if (tr.getElement('th') == null) {
                               
            tr.addClass("even");
        }
    });
       
    $$('tr:odd').each(function(tr) {
        if (tr.getElement('th') == null) {
                               
            tr.addClass("odd");
        }
    });
});
</script>

Метки: css, разработка, JavaScript

Комментарии:

Alexander 15 март 2009, 17:42
Совсем не обязательно использовать счетчик i.
Четные/нечетные элементы можно выбирать, используя псевдоселекторы $$('tr:even') / $$('tr:odd');

mootools.net/docs/Utilities/Selectors#Selector:even

PS Разреши русские буквы в логине: )
Ответить
Alexander 15 март 2009, 17:43
Боже мой, это не я на фото ))
Ответить
Ladygin 19 март 2009, 15:27
Спасибо! Недосмотрел: )
Исправлю.
Ответить
Ney 16 март 2009, 10:37
На jQuery это будет примерно так:
$('table.table tr:even').addClass('even');
$('table.table tr:odd').addClass('odd');

Гораздо короче и понятнее.
Ответить
Ozzy 17 март 2009, 20:47
to Ney
вобщето на jQuery будет вот так:

$(«tr:nth-child(odd)»).addClass(«odd»);
Ответить
flyweb 19 март 2009, 15:43
Серега!!! не удобно копировать код, он копируется с номерами строк!
Ответить
flyweb 22 март 2009, 01:39
Вот теперь другое дело…
Ответить
Vascud-Crisis 24 март 2009, 07:16
А вот тоже самое, но на «jQuery»:
$(«tr:nth-child(odd)»).addClass(«odd»);
Ответить
IMAM 18 май 2009, 13:08
$("#table tr:nth-child(odd) > td").addClass(«odd»);

Вот это для IE, потому как IE не пониамние фон у tr
Ответить
voland 31 август 2009, 05:59
Я правильно понимаю что это должно работать также и с mootools 1.1 — или нет?
Ответить
Ladygin 01 сентябрь 2009, 00:06
Точно не помню, но по моему там не поддерживались такие селекторы — $$('tr:even'), но первый вариант будет работать точно.
Ответить
voland 01 сентябрь 2009, 11:57
Да, похоже на правду… второй вариант увы не работает. А с первым проблемы… видимо из-за вложенности страниц у меня к tr длобавляются сразу два класса even odd и odd even соответсвенно
Ответить

Комментировать

*Логин:

*E-mail:
(сохранность гарантируем)

Сайт:

Aptana Class CodeIgniter Flash IDE JavaScript Linux PHP PostgreSQL SSH Ubuntu Zend Framework cms css jQuery online-приложения wordpress Базы данных Книги Кэширование ООП Ссылки Типографика вдохновение вебдизайн виджеты дизайн заголовки инструменты поддомены разработка регистрация

Блог
Новости

Новости индустрии

Пожертвовать