Hallo
der sehr gute Feature-Artikel über dynamisches Sortieren einer Tabelle per Javascript unter http://aktuell.de.selfhtml.org/artikel/dhtml/tabellen-sortieren/
Ich finde diesen Ansatz gar nicht gut, denn er schliesst Browser ohne JavaScript einfach aus. Siehe dazu http://aktuell.de.selfhtml.org/weblog/javascript-einsatz. Eine bessere Lösung wäre ein Script, dass die Daten aus einer bestehenden HTML-Tabelle ausliest und dieser dann die Sortierfunktion anfügt.
Ich hatte mal ein solches Skript mit der Vorlage eines Artikels aus der iX erstellt: http://www.khausali.ch/js/sTable.js
Ich habe eine Lösung dieses Problems gefunden, die auch zu funktionieren scheint.
Wie sieht die denn aus?
Sie ist aber daran gebunden, dass die Funktion "numsort" aus diesem Coding stabil sortiert, d.h. bei Sätzen mit gleichem Wert im Sortierkriterium deren ursprüngliche Reihenfolge beibehält. Zum Glück, geht es bei mir nur um numerische Werte, so dass ich mich auf den Numsort beschränken kann. Die eigentliche Methode "sort" von JavaScript sortiert ja wohl nicht stabil.
Kann mal jemand, der mehr von der Materie versteht, checken, ob diese Funktion "numsort" stabil sortiert ?
Ist das evtl. Browser-abhängig ?
Dafür habe ich folgenden Testcode geschrieben:
window.onload= function() {
var a=new Array('2','11c','4','7a','6','13','11d','7b');
alert(a.sort(numSort));
};
function numSort(a,b) {
return (parseInt(a)-parseInt(b));
}
Die Browser reagieren ganz verschieden.
Stabil:
IE(6 und 7): 2,4,6,7a,7b,11c,11d,13
Safari: 2,4,6,7a,7b,11c,11d,13
Instabil instabil:
Firefox: 2,4,6,7b,7a,11c,11d,13
Stabil instabil:
Opera: 2,4,6,7b,7a,11d,11c,13
Gibt es eine Möglichkeit, den eigentlichen "sort" stabil zu machen?
Interessante Frage! Vielleicht indem man die Array.prototype.sort() überschreibt, was aber zu lasten der Performance ginge...
Gruss,
Mathias