Пример скрипта исчезающих рядов.
Скрипт исчезающих рядов таблицы в зависимости от выбранного radio checked очень удобный для представления сложных таблиц с большим количеством данных. С помощью этого скрипта ряды в таблице можно группировать, и выводить пользователю только интересующую его информацию. Например, я использовала этот скрипт для представления программы мероприятий, чтобы сгруппировать активности в зависимости от места проведения.Задача: Существует таблица. Над ней переключатель radio. В зависимости от выбранного переключателя radio отображаются определенные ряды таблицы.
Выглядит это так:
Черный
Белый
Черный ряд | Черный ряд | Черный ряд | Черный ряд |
Белый ряд | Белый ряд | Белый ряд | Белый ряд |
Черный ряд | Черный ряд | Черный ряд | Черный ряд |
Белый ряд | Белый ряд | Белый ряд | Белый ряд |
Реализация
Задача реализовывалась с помощью Javascript. На странице отдельно располагаются переключатель radio и таблица со всеми необходимыми тегами: <table><tr><td>
Важно!!! Каждый тег <input> должен содержать id r1, следующий r2 и т.д. в зависимости от количества переключателей. Для переключателя «Показать все» id должен быть allr
Переключатель radio должен выглядеть так:
1 2 3 4 5 |
<div> <input id="allr" name="test" type="radio" />Показать все<br> <input id="r1" name="test" type="radio" />Черный<br> <input id="r2" name="test" type="radio" />Белый </div> |
В примере два переключателя «Черный» и «Белый», которым присвоены id r1 и r2; и один переключатель «Показать все» с id=»allr».
В соответствии с количеством переключателей, рядам таблицы будут заданы классы. Сколько переключателей, столько должно быть и классов. И никак не больше и не меньше, иначе скрипт не будет работать. В примере это классы: white и black. Эти классы присваиваются тегу <tr> и таблица выглядит таким образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<table> <tbody> <tr class="black"> <td width="164" style="background-color: #000000; color: #ffffff; font-weight: bold;">Черный ряд</td> <td width="164" style="background-color: #000000; color: #ffffff; font-weight: bold;">Черный ряд</td> <td width="164" style="background-color: #000000; color: #ffffff; font-weight: bold;">Черный ряд</td> <td width="164" style="background-color: #000000; color: #ffffff; font-weight: bold;">Черный ряд</td> </tr> <tr class="white"> <td width="164">Белый ряд</td> <td width="164">Белый ряд</td> <td width="164">Белый ряд</td> <td width="164">Белый ряд</td> </tr> <tr class="black"> <td width="164" style="background-color: #000000; color: #ffffff; font-weight: bold;">Черный ряд</td> <td width="164" style="background-color: #000000; color: #ffffff; font-weight: bold;">Черный ряд</td> <td width="164" style="background-color: #000000; color: #ffffff; font-weight: bold;">Черный ряд</td> <td width="164" style="background-color: #000000; color: #ffffff; font-weight: bold;">Черный ряд</td> </tr> <tr class="white"> <td width="164">Белый ряд</td> <td width="164">Белый ряд</td> <td width="164">Белый ряд</td> <td width="164">Белый ряд</td> </tr> </tbody> </table> |
В таблице половина рядов с классом white и половина с классом black. Количество рядов с один или другим классом не важно. Их может быть очень много, главное, чтобы классов фигурировало всего два, так как задано только два переключателя. Если классов должно быть больше, то для них вводятся новые переключатели.
После того, как на странице уже расположены переключатель и таблица, нужно разместить сам скрипт:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
<script> //нужно задать переменные, которые соответствуют классам //каждая последующая задается через raw[следующий порядковый номер] var raw = []; raw[0] = document.getElementsByClassName('black'); raw[1] = document.getElementsByClassName('white'); //удалите эту часть, если вам не нужен переключатель /Показать все/ //переменная для /Показать все/ var allraws = document.getElementById('allr'); allraws.onclick=function() {allGo()}; function allGo () { for (b=0; b<=number2; b++) { if (allraws.checked) {for (s=0; s<raw[b].length; s++) {raw[b][s].style.display = 'table-row';} } } } //конец удаления, если вам не нужен переключатель /Показать все/ //далее исправления не вносить!!! var number = raw.length; var number2 = number - 1; var clicks = []; //id в массив for (i=1; i<=number; i++) { var newclick = document.getElementById('r'+ i); clicks.push(newclick); } //добавить событие onclick всем id for (j=0; j<=number2; j++) { clicks[j].onclick=function() {Go()}; } //функция выполнения oncklick function Go () { for (l=0; l<=number2; l++) { if (clicks[l].checked) { for (k=0; k<raw[l].length; k++) {raw[l][k].style.display = 'table-row';} } else { for (m=0; m<raw[l].length; m++) {raw[l][m].style.display = 'none';} } } } </script> |
Единственное изменение которое нужно сделать в скрипте — это задать переменные, которые соответствуют классам (рядам таблице), то есть выполнить поиск элементов с определенным классом. Делается это с помощью getElementsByClassName. В скрипте эти переменные уже помещены в массив, поэтому задаются они так:
1 2 3 4 |
var raw = []; raw[0] = document.getElementsByClassName('black'); raw[1] = document.getElementsByClassName('white'); |
Начало подсчета начинается с нуля. Если классов в таблице больше, чем два, то следующая переменная будет:
и так далее.
Для вашего скрипта, вам понадобиться только заменить классы black и white на классы с вашей таблицы и добавить новые переменные, если у вас больше переключателей, чем два.
Когда все переменные введены и всем рядам таблицы присвоены нужные классы, скрипт работает и показывает магию Javascript 🙂