Einzelnen Beitrag anzeigen

Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#1

[JavaScript]: Eine HTML-Tabelle mit QuickSort sortieren

  Alt 9. Jul 2005, 00:15
So, ich habe lange dran geknobelt und jetzt stelle ich euch den algo vor, der eine stinknormale statische HTML-Tabelle sortiert. Ich habe im Internet SEITENLANGE qts gefunden, die angebliche das gleiche tun... Naja, für alle, die mal vor dem gleichen Problem stehen:
Code:
function sortnumtable(tblid,spalte,lo,hi)
{
  var temp ="";
  var i=lo;
  var j=hi;
  with(document.getElementById(tblid))
  {
    if (hi ==-1) hi =rows.length-1;
    var x=parseFloat(rows[Math.floor((hi+lo)/2)+1].cells[spalte].innerHTML);
    while(i<=j)
    {
      while(parseFloat(rows[i].cells[spalte].innerHTML)<x) i++;
      while(parseFloat(rows[j].cells[spalte].innerHTML)>x) j--;
      if (i<=j)
      {
        for(var z=0; z<rows[1].cells.length; z++)
        {
          temp =rows[i].cells[z].innerHTML;
          rows[i].cells[z].innerHTML =rows[j].cells[z].innerHTML;
          rows[j].cells[z].innerHTML =temp;
        }
        i++; j--;
      }
    }
    if (lo<j) sortnumtable(tblid,spalte,lo,j);
    if (i<hi) sortnumtable(tblid,spalte,i,hi);
  }
}
Ein Beispiel:
Code:
<table id="mytable">
  <tr>
    <td>Artikel</td>
    <td>Preis in Euro/kg</td>
  </tr>
  <tr>
    <td>Kartoffeln</td>
    <td>1.50</td>
  </tr>
  <tr>
    <td>Birnen</td>
    <td>1.1</td>
  </tr>
</table>
[url="javascript:void(sortnumtable('mytable',1,1,-1));"]Sortieren[/url]
Die Tabelle kann so natürlich um ein westenliches vergrößert werden. Eine 170*8 größe Tabelle wird bei mir in ca. 0,5 Sekunden sortiert...
Zum Aufruf: sortnumtable('mytable',1,1,-1)
mytable ist einfach nur die id der table
1 (die erste) ist die Spalte, nach der sortiert werden soll. Also hier ist das die Preisspalte.
1 (die zweite) ist die untere Begrentzung, von dem zu sortierenden Feld. Das ist ein array, der mit 0 beginnt. Aber die Überschriften wollen wir mal nicht mitsortieren
-1 (letzter parameter). Dies gibt die obere Begrentzung an. Wenn der Wert -1 ist, nimmt der algo einfach die komplette Tabelle.

So, das ist zwar eigenlich ein Delphiforum, aber ihr seit einfach die größten. Ich war schon in mehreren Webdesignforen und ihr seid auch auf diesem Gebiet einfach die Besten und daher halte ich es für angebracht, webdesignsachen hier zu posten
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat