Сортировка таблицы html. Обеспечение совместимости с FF. Описание класса Column

Месяц у меня вылеживалась эта дура на 10 листов. Нашла, подправила. Пусть будет...

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

План таков: Постановка задачи

Максимально универсальная функция должна:

  • Легко подключаться, не зависеть от дизайна, никакого JS-кода не должно быть в объявлении таблицы.
  • Корректно работать для строковых и числовых значений.
  • Корректно обрабатывать теги внутри ячеек таблицы.
  • Автоматически менять вид заголовка столбца в зависимости от направления сортировки.
  • Корректно работать во всех распространенных браузерах. В моем понимании это IE, Opera и FF. В других теоретически тоже должно работать.
Выбор алгоритма сортировки

Из множества алгоритмов сортировки здесь выбираем самый простой. Суть такова: находим наименьший (или наибольший - в зависимости от порядка сортировки) элемент массива, меняем его местами с первым элементом. Далее находим второй наименьший (или наибольший), и меняем его со вторым. Ну и так далее.

Для наглядности привожу классическую реализацию алгоритма сортировки массива по возрастанию:

var arr = new Array(4, 5, 1, 3, 2); for (var i=0; i= 1046 && tmp < 1078) tmp++; else if(tmp == 1025) tmp = 1046; else if(tmp >= 1078) tmp++; else if(tmp == 1105) tmp = 1078; retArray[ i ] = tmp; } return retArray; } function fillArray(years, books, authors) { authors = upCs(authors, " "); authors = upCs(authors, "-"); books = upCs(books, ""); this.years = years; this.yweight = weight(years); this.books = books; this.bweight = weight(books); this.authors = authors; this.aweight = weight(authors); } function isLow(low, high, type) { var len1 = low[ type ].length; var len2 = high[ type ].length; var length = len1 < len2 ? len1: len2; for(var i = 0; i < length; i++) { var str1 = low[ type ][ i ]; var str2 = high[ type ][ i ]; if(str1 < str2) return true; if(str1 > str2) return false; } if(len1 < len2) return true; return false; } function quickSort(l, h, type) { var low = l; var high = h; var rt = eval("txt[ " + Math.round((l + h) / 2) + " ]"); var middle = new fillArray(rt.years, rt.books, rt.authors); do { while(isLow(eval("txt[ " + low + " ]"), middle, type)) low++; while(isLow(middle, eval("txt[ " + high + " ]"), type)) high--; if(low

В продолжение темы:
Windows

Часть вторая : "Важнейшие характеристики каждого семейства процессоров Intel Core i3/i5/i7. Какие из этих чипов представляют особый интерес" Введение Сначала мы приведём...

Новые статьи
/
Популярные