Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sortowanie tabeli rosnace i malejące
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
mateuszpi
Witam. mam taki skrypt w javie:
  1. <title>Sortowanie danych w DHTML</title>
  2. <meta name="description" content="Sortowanie tabeli w JavaScript">
  3. <meta name="kategoria" content="Gości">
  4. <meta name="author" content="BlaTek">
  5. <meta name="email" content="blatek@25.pl">
  6. <meta name="www" content="http://blatek.25.pl">
  7. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
  8.  
  9. <script type="text/javascript">
  10. function exPL(x){
  11. return x.toLowerCase().replace(/[ąęśćółńżź]/g,function(s){
  12. return(s=='ą'?'a':s=='ę'?'e':s=='ś'?'s':s=='ć'?'c':
  13. s=='ó'?'o':s=='ł'?'l':s=='ń'?'n':s=='ź'?'z':'zż')+'ż'})
  14. }
  15.  
  16. var Sekcja,Wiersze,Tablica_Wierszy=[]
  17.  
  18. function initSort(){
  19. if(!document.getElementById)return
  20. Sekcja=document.getElementById('Sort_id')
  21. Wiersze=Sekcja.getElementsByTagName('tr')
  22.  
  23. for(var i=0;i<Wiersze.length;i++)
  24. Tablica_Wierszy[i]=Wiersze[i].cloneNode(true)
  25. }
  26.  
  27. function Sortuj(x){
  28. if(!document.getElementById||!Wiersze)return
  29.  
  30. Tablica_Wierszy.sort(function(A,B,a,b){
  31. a=A.getElementsByTagName('td')[x].innerHTML
  32. b=B.getElementsByTagName('td')[x].innerHTML
  33. a=exPL(a);b=exPL(b)
  34. return a>b?1:a<b?-1:0
  35. }
  36. )
  37.  
  38. while(Wiersze.length)
  39. Sekcja.removeChild(Wiersze[0])
  40. for(var i=0;i<Tablica_Wierszy.length;i++)
  41. Sekcja.appendChild(Tablica_Wierszy[i])
  42. }
  43.  
  44. </head>
  45.  
  46. <body onload="initSort()">
  47.  
  48. <p>
  49. <a href="#" onclick="Sortuj(0);return false">Sortuj według Imienia</a><br>
  50. <a href="#" onclick="Sortuj(1);return false">Sortuj według Nazwiska</a><br>
  51. <a href="#" onclick="Sortuj(2);return false">Sortuj według Zawodu</a><br>
  52. </p>
  53.  
  54. <table border="1">
  55. <tr><th>Imię</th><th>Nazwisko</th><th>Zawód</th></tr>
  56. </tbody>
  57. <tbody id="Sort_id">
  58. <tr><td>Jan</td><td>Kowalski</td><td>kowal</td></tr>
  59. <tr><td>Maciej</td><td>Kuroń</td><td>kucharz</td></tr>
  60. <tr><td>Zbigniew</td><td>Zamachowski</td><td>aktor</td></tr>
  61. <tr><td>Adam</td><td>Małysz</td><td>skoczek</td></tr>
  62. <tr><td>Bill</td><td>Clinton</td><td>emeryt</td></tr>
  63. <tr><td>Dorota</td><td>Stalińska</td><td>aktorka</td></tr>
  64. <tr><td>Krzysztof</td><td>Nowak</td><td>robotnik</td></tr>
  65. <tr><td>Bolesław</td><td>Chrobry</td><td>król</td></tr>
  66. <tr><td>Jerzy</td><td>Stuhr</td><td>aktor</td></tr>
  67. <tr><td>Kamil</td><td>Durczok</td><td>dziennikarz</td></tr>
  68. <tr><td>Natalia</td><td>Kukulska</td><td>piosenkarka</td></tr>
  69. <tr><td>Piotr</td><td>Buśka</td><td>webmaster</td></tr>
  70. <tr><td>Colin</td><td>McRae</td><td>kierowca</td></tr>
  71. <tr><td>Henryk</td><td>Sienkiewicz</td><td>pisarz</td></tr>
  72. <tr><td>Kazimierz</td><td>Wielki</td><td>król</td></tr>
  73. <tr><td>Bogdan</td><td>Piekarski</td><td>piekarz</td></tr>
  74. <tr><td>Stanisław</td><td>Moniszko</td><td>muzyk</td></tr>
  75. <tr><td>Adam</td><td>Mickiewicz</td><td>pisarz</td></tr>
  76. </tbody>
  77.  
  78. </body>
  79. </html>


działą perfekcyjnie jednak ustawia tylko w kolejności alfabetycznej: a b c d..
czy mozecie mi go przerobić aby by ustawial też odwrotnie czyli od tyłu alfabetu: questionmark.gif z y x ...

może być na zasadzie 2 linka albo powtórne kliknięcie powoduje segregowanie odwrotne.

głównym wymaganiem jest aby działało dla tabel napisanych w formacie jak wyżej.

ja dopisałem coś takiego:
  1. function Sortujz(x){
  2. if(!document.getElementById||!Wiersze)return
  3.  
  4. Tablica_Wierszy.sort(function(Z,Y,z,y){
  5. z=A.getElementsByTagName('td')[x].innerHTML
  6. y=B.getElementsByTagName('td')[x].innerHTML
  7. z=exPL(z);y=exPL(y)
  8. return z>y?1:z<y?-1:0
  9. }
  10. )


i dałem linki w postaci:
  1. <a href="#" onclick="Sortujz(0);return false">Sortuj według rodzaj</a><br>
  2. <a href="#" onclick="Sortujz(1);return false">Sortuj według E-mail</a><br>
  3. <a href="#" onclick="Sortujz(2);return false">Sortuj według Strona WWW</a><br>
  4. <a href="#" onclick="Sortujz(3);return false">Sortuj według Województwa</a><br>
  5. <a href="#" onclick="Sortujz(4);return false">Sortuj według Ulica</a><br>
  6. <a href="#" onclick="Sortujz(5);return false">Sortuj według Telefon</a><br>



jednak wtedy nie działa żadne sortowanie sad.gif


z góry dzieki i czekam na efekty waszych pomysłów.
nospor
  1. <title>Sortowanie danych w DHTML</title>
  2. <meta name="description" content="Sortowanie tabeli w JavaScript">
  3. <meta name="kategoria" content="Gości">
  4. <meta name="author" content="BlaTek">
  5. <meta name="email" content="blatek@25.pl">
  6. <meta name="www" content="http://blatek.25.pl">
  7. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
  8.  
  9. <script type="text/javascript">
  10. function exPL(x){
  11. return x.toLowerCase().replace(/[ąęśćółńżź]/g,function(s){
  12. return(s=='ą'?'a':s=='ę'?'e':s=='ś'?'s':s=='ć'?'c':
  13. s=='ó'?'o':s=='ł'?'l':s=='ń'?'n':s=='ź'?'z':'zż')+'ż'})
  14. }
  15.  
  16. var Sekcja,Wiersze,Tablica_Wierszy=[]
  17.  
  18. function initSort(){
  19. if(!document.getElementById)return
  20. Sekcja=document.getElementById('Sort_id')
  21. Wiersze=Sekcja.getElementsByTagName('tr')
  22.  
  23. for(var i=0;i<Wiersze.length;i++)
  24. Tablica_Wierszy[i]=Wiersze[i].cloneNode(true)
  25. }
  26.  
  27. function Sortuj(x, sort){
  28. if(!document.getElementById||!Wiersze)return
  29.  
  30. Tablica_Wierszy.sort(function(A,B,a,b){
  31. a=A.getElementsByTagName('td')[x].innerHTML
  32. b=B.getElementsByTagName('td')[x].innerHTML
  33. a=exPL(a);b=exPL(b);
  34. if (sort == 'up')
  35. return a>b?1:a<b?-1:0
  36. else
  37. return a<b?1:a>b?-1:0
  38. }
  39. )
  40.  
  41. while(Wiersze.length)
  42. Sekcja.removeChild(Wiersze[0])
  43. for(var i=0;i<Tablica_Wierszy.length;i++)
  44. Sekcja.appendChild(Tablica_Wierszy[i])
  45. }
  46.  
  47. </head>
  48.  
  49. <body onload="initSort()">
  50.  
  51. <p>
  52. <a href="#" onclick="Sortuj(0, 'up');return false">Sortuj według Imienia Rosnaco</a>||<a href="#" onclick="Sortuj(0, 'down');return false">Sortuj według Imienia Malejaco</a><br>
  53. <a href="#" onclick="Sortuj(1);return false">Sortuj według Nazwiska</a><br>
  54. <a href="#" onclick="Sortuj(2);return false">Sortuj według Zawodu</a><br>
  55. </p>
  56.  
  57. <table border="1">
  58. <tr><th>Imię</th><th>Nazwisko</th><th>Zawód</th></tr>
  59. </tbody>
  60. <tbody id="Sort_id">
  61. <tr><td>Jan</td><td>Kowalski</td><td>kowal</td></tr>
  62. <tr><td>Maciej</td><td>Kuroń</td><td>kucharz</td></tr>
  63. <tr><td>Zbigniew</td><td>Zamachowski</td><td>aktor</td></tr>
  64. <tr><td>Adam</td><td>Małysz</td><td>skoczek</td></tr>
  65. <tr><td>Bill</td><td>Clinton</td><td>emeryt</td></tr>
  66. <tr><td>Dorota</td><td>Stalińska</td><td>aktorka</td></tr>
  67. <tr><td>Krzysztof</td><td>Nowak</td><td>robotnik</td></tr>
  68. <tr><td>Bolesław</td><td>Chrobry</td><td>król</td></tr>
  69. <tr><td>Jerzy</td><td>Stuhr</td><td>aktor</td></tr>
  70. <tr><td>Kamil</td><td>Durczok</td><td>dziennikarz</td></tr>
  71. <tr><td>Natalia</td><td>Kukulska</td><td>piosenkarka</td></tr>
  72. <tr><td>Piotr</td><td>Buśka</td><td>webmaster</td></tr>
  73. <tr><td>Colin</td><td>McRae</td><td>kierowca</td></tr>
  74. <tr><td>Henryk</td><td>Sienkiewicz</td><td>pisarz</td></tr>
  75. <tr><td>Kazimierz</td><td>Wielki</td><td>król</td></tr>
  76. <tr><td>Bogdan</td><td>Piekarski</td><td>piekarz</td></tr>
  77. <tr><td>Stanisław</td><td>Moniszko</td><td>muzyk</td></tr>
  78. <tr><td>Adam</td><td>Mickiewicz</td><td>pisarz</td></tr>
  79. </tbody>
  80.  
  81. </body>
  82. </html>
mateuszpi
niestety sortowanie wogóle nie działa. w zadną se stron
nospor
no popatrz, a mi dziala:
http://nospor.vis-maior.net/sort.html

Kopiowac tez trzeba umiec tongue.gif
mateuszpi
wykorzystałem źródło twojej strony i zadziałąło. a dlaczego przedtem nie chciało questionmark.gif nie wiem ale grunt że teraz działa. dzięki biggrin.gif
Leech
a jak to przerobić dla liczb?
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-2025 Invision Power Services, Inc.