Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как отсортировать строки html таблицы по результату определённой ячейки
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Как отсортировать строки html таблицы по результату определённой ячейки

Страниц (1): [1]
 

1. armancho7777777 - 18 Февраля, 2012 - 12:46:12 - перейти к сообщению
Всем привет!
Как отсортировать строки html таблицы по результату определённой ячейки.
На пример, есть такая таблица:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <table>
  3.   <tr>
  4.     <td>Текст</td>
  5.     <td>1</td>
  6.     <td>шт.</td>
  7.   </tr>
  8.   <tr>
  9.     <td>Текст</td>
  10.     <td>5</td>
  11.     <td>шт.</td>
  12.   </tr>
  13.   <tr>
  14.     <td>Текст</td>
  15.     <td>2</td>
  16.     <td>шт.</td>
  17.   </tr>
  18.   <tr>
  19.     <td>Текст</td>
  20.     <td>6</td>
  21.     <td>шт.</td>
  22.   </tr>
  23.   <tr>
  24.     <td>Текст</td>
  25.     <td>3</td>
  26.     <td>шт.</td>
  27.   </tr>
  28.   <tr>
  29.     <td>Текст</td>
  30.     <td>7</td>
  31.     <td>шт.</td>
  32.   </tr>
  33.   <tr>
  34.     <td>Текст</td>
  35.     <td>10</td>
  36.     <td>шт.</td>
  37.   </tr>
  38.   <tr>
  39.     <td>Текст</td>
  40.     <td>9</td>
  41.     <td>шт.</td>
  42.   </tr>
  43.   <tr>
  44.     <td>Текст</td>
  45.     <td>11</td>
  46.     <td>шт.</td>
  47.   </tr>
  48.   <tr>
  49.     <td>Текст</td>
  50.     <td>8</td>
  51.     <td>шт.</td>
  52.   </tr>
  53. </table>
  54.  


Как отсортировать строки по значению вторых ячеек?

.
2. tuareg - 18 Февраля, 2012 - 12:56:34 - перейти к сообщению
Определяешь номер ячейки. Выбираешь все значения в массив. И ф-я сортировки массива.
3. armancho7777777 - 18 Февраля, 2012 - 13:21:53 - перейти к сообщению
tuareg пишет:
Определяешь номер ячейки. Выбираешь все значения в массив. И ф-я сортировки массива.

Да это я понимаю.
Надо, чтобы при клике на кнопку, строки отсортировались.
Не могу реализовать, хотя задача простая))
4. tuareg - 18 Февраля, 2012 - 13:48:36 - перейти к сообщению
Я это делал следующим образом. Сразу уточняю, я не претендую на гениальность. Улыбка
Сначала я выбирал в массив типа
arrHtml[0]='<tr><td><td></tr>';/**/всю таблицу
Потом, вместо второго массива я использовал ассоциативный массив, типа
arr[0]={
index:0,/*индекс=arrHtml[0]*/
ячейка№1:5
}
arr[1]={
index:1,
ячейка№1:2
}
Сортировку многомерного массива я взял с http://webew[dot]ru/articles/2209[dot]webew
Ну а после сортировки вторго все просто, проходим новый массив и подставляем значения из массива arrHtml
5. armancho7777777 - 18 Февраля, 2012 - 14:27:53 - перейти к сообщению
)) Почти так и сделал))

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $(function(){
  3.  
  4.   var arrTR = [];
  5.  
  6.   $('table tr').each(function(index, element) {
  7.          
  8.          arrTR[index] = [[parseInt($.trim($(this).find('td:eq(1)').text()), 10)], [this]];
  9.          
  10.   });  
  11.        
  12.   function sortFunction_min(a, b){
  13.         if(a[0][0] < b[0][0]){
  14.           return -1;
  15.         }
  16.         else if(a[0][0] > b[0][0]){
  17.           return 1;
  18.         }
  19.         else{
  20.           return 0;
  21.         }
  22.   }
  23.  
  24.  
  25.   function sortFunction_max(a, b){
  26.         if(a[0][0] > b[0][0]){
  27.           return -1;
  28.         }
  29.         else if(a[0][0] < b[0][0]){
  30.           return 1;
  31.         }
  32.         else{
  33.           return 0;
  34.         }
  35.   }
  36.  
  37.  
  38.   var newArr = arrTR.sort(sortFunction_min);
  39.  
  40.   for(var key in newArr){
  41.         $('table').append($(newArr[key][1]));
  42.   }
  43.  
  44.  
  45.   var radio = $('#radio_inp');
  46.  
  47.   $('#btn').click(function(){
  48.          
  49.         if(radio.is(':checked')){
  50.           newArr = arrTR.sort(sortFunction_max);
  51.           radio.attr('checked', false);
  52.         }
  53.         else
  54.         {
  55.           newArr = arrTR.sort(sortFunction_min);
  56.           radio.attr('checked', true);
  57.         }      
  58.        
  59.        
  60.         for(var key in newArr){
  61.            $('table').append($(newArr[key][1]));
  62.         }
  63.          
  64.   });
  65.        
  66.        
  67. });
  68.  
6. tuareg - 18 Февраля, 2012 - 15:28:08 - перейти к сообщению
можно и так, но это плохая идея, для большой таблицы.

 

Powered by ExBB FM 1.0 RC1