Источник информации: Заметки HTML кодера
Иногда перед разработчиком стоит задача обеспечить сортировку столбцов в таблице с данными. Классическим решением является использование какого-нибудь серверного ЯП, который бы сортировал данные по определённому столбцу и отдавал полученную страницу клиенту.
Я хочу вам предложить альтернативное решение, работающее в W3C DOM-совместимых браузерах: Internet Explorer 5+ и Netscape Navigator 6+/Mozilla. Вообще, первым алгоритм сортировки предложил Пол Соуден (Paul Sowden), я же внёс в скрипт существенные коррективы.
Вот, что мы получаем в итоге (нажмите на заголовок, чтобы отсортировать колонку):
В других браузерах (например, Opera) таблица просто останется не отсортированная, в первозданном виде.
Теперь же о том, всё это дело реализуется. Буду объяснять по пунктам (изменения в плане HTML, CSS и JavaScript), чтобы легче было проследить логику.
HTML
Прежде всего, необходимо особым образом отформатировать таблицу, к которой вы собираетесь подключить возможность сортировки. Обратите внимание на код:
Как вы видите, необходимо указать теги thead (шапка таблицы) и tbody (основная часть). Обычно их мало кто использует, но здесь эти теги весьма кстати.
Вам также нужно создать две картинки, которые бы указывали текущий вариант сортировки 0.gif (картинка сортировки вниз) и 1.gif (картинка сортировки вверх). Положите их, например, в корневой директории в папку «i». Я обычно называю папки с картинками для сайта именно так, но ничто не мешает использовать для наших целей классическую папку «images». Дело хозяйское, просто тогда вам нужно будет поменять в программке переменную img_dir (см. ниже пункт JavaScript).
В моём случае стрелочки выглядят так (можете их спионерить, я не против :-):
CSS
Задаём следующие классы в таблице стилей:
Затем не забудьте указать у HTML таблицы класс sort (<table class="sort" align="center"> ).
JavaScript
Итак, мы подошли к «начинке» всего этого дела. Пропишите на странице следующий фрагмент:
Единственное, что вам нужно поменять в скрипте, так это переменную img_dir . Она должна указывать на каталог, где у вас лежат файлы 0.gif (картинка сортировки вниз) и 1.gif (картинка сортировки вверх).
Я решил не разбирать детально сам скрипт. Кому интересно, как всё работает, думаю, сам сможет понять.
|