IPB

Здравствуйте, гость ( Вход )


Важные объявления

 
Reply to this topicStart new topic
> Пересортировка таблиц на сайте.
John
сообщение 19.11.2010, 12:46
Сообщение #1


Стеклянная птица.
Иконка группы

Сообщений: 5 197
Регистрация: 10.5.2007
Из: Москва.
Россия
ИД на сайте: 80287


Репутация:   328  


То, что сайт состоит из таблиц видно любому. Некоторые пользуются пересортировкой колонок в этих таблицах, некоторые нет. Но так или иначе, при клике на шапку колонки происходит пересортировка. При этом страница перегенеряется.

Вопрос: почему не сделать пересортировку таблиц скриптом на уровне браузера, а не на уровне сервера, как сейчас? Вот код, который делает подобную вещь.

Код
/** Функция производит пересортировку произвольной таблицы, выведенной на экран браузера. Повторный клик выполняет обратную сортировку.
    @param El - Идентификатор сортируемой таблицы
    @param cell_ident - Номер сортируемой ячейки.
*/
function resort(El, cell_ident)
{
    if(sort_cell == cell_ident)
    {
        sort_order = 1 - sort_order;
    }
    else
    {
        sort_order = 0;
        sort_cell = cell_ident;
    }
    
    have_changes = true;
    
    tbl = document.getElementById(El);
    tbl_size = tbl.rows.length;
    
    while(have_changes)
    {
        have_changes = false;
        
        for(i = 1;i < tbl_size - 1;i = i + 1)
        {
            need_move = 0;
            
            if(sort_order == 0)
            {
                need_move = tbl.rows[i].cells[sort_cell].innerHTML < tbl.rows[i + 1].cells[sort_cell].innerHTML;
            }
            else
            {
                need_move = tbl.rows[i].cells[sort_cell].innerHTML > tbl.rows[i + 1].cells[sort_cell].innerHTML;
            }
            
            if(need_move)
            {
                have_changes = true;
                
                for(j = 1;j < tbl.rows[i].cells.length; j++)
                {
                
                    val = tbl.rows[i].cells[j].innerHTML;
                    
                    tbl.rows[i].cells[j].innerHTML = tbl.rows[i + 1].cells[j].innerHTML;
                    tbl.rows[i + 1].cells[j].innerHTML = val;
                    
                }
            }
        }
    }
}


Работает во всех браузерах, кроме Конкверора (просто не проверял).

Конечно, этому скрипту требуется доработка для нужд Бутсы, так как сейчас он просто проверяет innerHTML на больше-меньше. Но эта доработка не слишком сложная - требуется добавить массив функций проверки, сортированный по индексу колонки.

Хотя бы немного нагрузку на страницу ростера такой механизм снизит.

Минус понятен - F5 сбросит сортировку в дефолт. Но, думаю, это не слишком критично.


--------------------
Go to the top of the page
 
+Quote Post

Fast ReplyReply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 23.7.2025, 3:16
Rambler's Top100