![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 230 Pomógł: 3 Dołączył: 8.01.2008 Ostrzeżenie: (10%) ![]() ![]() |
Robię sortowanie tabeli. Używam do tego JSowskiej funkcji sort z przypisaniem funkcji sortującej, wygląda to mniej więcej tak:
Kod function sortByNumber(a,b){ return a-b; } var tablica=[5,2,64,34,2,3,64,3]; tablica.sort(sortByNumber); No i takie coś ładnie działa. Tylko że ja mam nieco bardziej te funkcje rozbudowane, no i chcę sortować według kilku kolumn. Można jakoś w parametrze funkcji przekazać nazwę funkcji, żeby przemycić ją później jako parametr sort()? Chodzi mi o coś takiego: Kod function sortuj(obiekt,funkcja){ ..... troche kodu przechwytywującego z obiektu elementy, które ma posortować - tworzy tablice z tymi elementami .... tablica.sort(funkcja); } Takie coś mi nie działało (jak w argumencie podawałem albo funkcja, albo funkcja(), albo function funkcja() ). Jak takie coś uzyskać? Wrzuciłem hamsko nazwe funkcji tak samo, jak podaje się w tym sort - i w FF takie coś działa, ale w Operze nie :/ Wie może ktoś co tutaj nie tak interpetuje Opera? I jak to naprawić? Może jakiś inny sposób sortowania zrobić, żeby też na operze działało (nie sort, a napisać własną taką funkcje)? Ale samo sort w operze działało, tylko że jak pokombinowałem z tym przekazywaniem nazwy funkcji jako parametr funkcji, w Operze JS przestalo działać :/ Ten post edytował Apocalyptiq 29.12.2008, 11:00:37 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 240 Pomógł: 0 Dołączył: 18.01.2004 Skąd: rzeszów / kraków Ostrzeżenie: (0%) ![]() ![]() |
nie wiem czy dobrze Cię zrozumiałem ale zrobiłem coś takiego:
i działa w operze, ff i ie |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 230 Pomógł: 3 Dołączył: 8.01.2008 Ostrzeżenie: (10%) ![]() ![]() |
Mi chodzi o samo wrzucanie jako parametr funkcji - funkcję, coś mi w Operze to nie działało (na IE nawet nie sprawdzałem, ale nie musi tam działać). W FF, jeżeli mam jakieś problemy z JS - znacznie robote ułatwia mi Firebug, a w Operze... Odpaliłem w niej Firebug Lite, ale nie wyłapywał błędów JS. Opera ma jakąś swoją taką konsole - ale w niej za bardzo nie mogłem się odnaleźć, i nie widziałem tam nigdzie, żeby wywalała błędy JS. A w Operze to sortowanie nie działa mi tak, że w ogóle JS nie działa. Ale jeżeli wywale sortowanie - pozostałe funkcje JS na stronie ładnie działają. W FF sortowanie ładnie działa.
Może przedstawie jak to wygląda: Kod function sortByNumber(a,b){ return parseInt($(a).find(".teamNumber").text())-parseInt($(b).find(".teamNumber").text()); } function sortByNumberDesc(b,a){ return parseInt($(a).find(".teamNumber").text())-parseInt($(b).find(".teamNumber").text()); } function sortByName(a,b){ return $(a).find(".teamName").text()>$(b).find(".teamName").text()?-1:1;; } function sortByNameDesc(b,a){ return $(a).find(".teamName").text()>$(b).find(".teamName").text()?-1:1;; } function sortBy(by,desc){ if(desc==undefined) desc=0; var trs=[]; var n=0; $("#teams tbody tr").each(function(){ trs[n]=this; n++; }); switch(by){ case 'value': if(desc==1) trs.sort(sortByValue); else trs.sort(sortByValueDesc); break; case 'league': if(desc==1) trs.sort(sortByLeague); else trs.sort(sortByLeagueDesc); break; case 'number': if(desc==1) trs.sort(sortByNumber); else trs.sort(sortByNumberDesc); break; case 'name': if(desc==1) trs.sort(sortByName); else trs.sort(sortByNameDesc); break; } for each(var tr in trs) $("#teams tbody").append(tr); } $(document).ready(function(){ $("#teamsNumber").click().toggle(function(){ sortBy('number'); },function(){ sortBy('number',1); }); $("#teamsName").click().toggle(function(){ sortBy('name'); },function(){ sortBy('name',1); }); }); Fajnie, jakby można to jakoś skrócić (żeby nie pisać osobnych sortować, do tego osobne dla odwrotnych), ale póki co nie działa to w Operze. Widzi ktoś tu może jakiś błąd? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 06:49 |