Java



             

Сортировка таблицы средствами JavaScript - часть 5


Листинг 7 :

1 function isLow( low, high, type ) { 2 var len1 = low[ type ].length; 3 var len2 = high[ type ].length; 4 var length = len1 < len2 ? len1 : len2; 5 6 for( var i = 0; i < length; i++ ) { 7 var str1 = low[ type ][ i ]; 8 var str2 = high[ type ][ i ]; 9 if( str1 < str2 ) 10 return true; 11 if( str1 > str2 ) 12 return false; 13 } 14 15 if( len1 < len2 ) 16 return true; 17 return false; 18 }

Как видите, кроме принципа работы с самими элементами, ничего необычного не происходит. Здесь для обращения к членам класса используются квадратные скобки, как в массиве. Подробнее о таком способе работы с пользовательскими объектами можно прочитать у Дмитрия Котерова на http://dklab.ru в статье "Маленькие хитрости JavaScript". Упомяну лишь то, что касается непосредственно работы нашей функции. Следует обратить внимание на строки 7 - 8. Здесь используется необычный способ адресации элемента. Предположу, что значение аргумента type равно "yweight", то есть хочу отсортировать по годам и обращаюсь к массиву-члену класса, который содержит данные о "весовом" значении строки с числом года. То есть фактически я буду обращаться так: low.yweight[ i ]. В этой функции больше никаких сложностей не вижу, поэтому пойду дальше.

Во всем остальном функция сортировки полностью соответствует своему классическому варианту, о реализации которого написано большое количество статей, поэтому больше никаких вопросов, касающихся этой функции, здесь рассматриваться не будет. Я же перейду к заключающей части своей статьи и рассмотрю функцию создания таблицы на основе DOM (Document Object Model), а также функции выбора сортировки. Сразу возьму код, который должен быть между тегами body:

Листинг 8 :

1 <table id="table"> 2 <tr> 3 <td><a href="javascript:allocator( 'yweight' )">Год</a></td> 4 <td><a href="javascript:allocator( 'bweight' )">Книга</a></td> 5 <td><a href="javascript:allocator( 'aweight' )">Автор</a></td> 6 </tr> 7 <tbody id="tablebody"></tbody> 8 </table>




Содержание  Назад  Вперед