Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Najprostrze sortowanie
Forum PHP.pl > Forum > Gotowe rozwiązania > Szukam
S_Olewniczak
Czy ktoś może mi napisać gotowy skrypt, lub naprowadzić, jak zrobić najprostszą funkcje do sortowania tabelki w js. Funkcja miała by trzy parametry
1. tabelka
2. Dowolny td z kolumny
3. Desc lub ASC
Bardzo proszę o pomoc.
korro
Witam.
TableSorter.
Bardzo prosta konstrukcja.
S_Olewniczak
Chciałbym coś jeszcze prostszego. Po prostu funkcję sortującą tabelkę, bez żadnych wyborów po prostu: podaje tabelkę do funkcji, posortowane wg jakiegoś pola i po sprawie.
korro
Ok. Napisz skąd masz dane do tej tabeli.
S_Olewniczak
Nie bardzo rozumiem. Mam zwykłą tabelkę:
Kod
<table>
<tr><td>Test</td></tr>
</table>
piotrooo89
a takie coś: http://olaszewski.com/2009/04/07/dynamiczna-tabelka-a-mysql/

w googlach jest tego pełno:

GOOGLE KLIK
S_Olewniczak
Trochę pobolało ale w końcu sam napisałem funkcję o którą mi chodziło.
Wywołując funkcję sortTable jako pierwszy parametr podajesz tabelkę, jako drugi dowolne pole(td) z kolumny którą chcesz sortować, a jako trzeci jak sortować:
ros - rosnąco
mal - malejąco
Oto kod(zawiera jedną funkcję pomocniczą):
Kod
         function getNrInParent(child) {
         tds = child.parentNode.getElementsByTagName('td');
        
             for(var i=0;i<tds.length;i++) {
                 if(tds[i] == child) return i;
             }
         }
         function sortTable(table, td, how) {
         var trs = table.getElementsByTagName('tr');
        
         for(var i=1;i<trs.length;i++) {
         var actTr = trs[i];
        
         var tds = trs[i].getElementsByTagName('td');
        
         var nr = getNrInParent(td);
        
         var ActTd = tds[nr].innerHTML;
        
        
         for(var j=1;j<trs.length;j++) {//op wszystkich wierszach z wyj 1(nagłówki)
         var WieszAkt = trs[j].getElementsByTagName('td')[nr].innerHTML;
             if ((WieszAkt > ActTd && how=='ros') || (WieszAkt < ActTd && how=='mal')) {
                 table.insertBefore(actTr ,trs[j]);
                 var add = 1;break;
             }
         }//for
         if(!add) {
             //element na końcu
         table.appendChild(actTr);
         }
         }//endfor
         }//function

Może komuś się kiedyś przyda.
Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.