Hallo!
Es geht also darum Tabellen zu sortieren. Dabei soll die Kompfzeile nur erzeugt werden, wenn die Tabelle sortiert werden soll.
Ich würde das so lösen:
var tables = new Array();
//Ein Objekt für die sortierbaren Tabellen
function SortableTable(compare, head, table) {
this.compare = compare; //Eine Funktion, die zwei Zeilen vergleicht und -1, 0, 1 für kleiner/gleich/größer zurück gibt.
this.header = header; //Eine Funktion, die den Header ausgibt
this.table = table //Die zu sortierende Tabelle
this.sortTable = sortTable;
this.table.insertChildNode(this.header(), 0);
tables[id] = this;
}
function sortTable(spaltenNummer) {
var elems = this.table.getElementsByTagName("tr");
//Sortieren der Zeilen mit irgend einem Sortieralgorithmus unter verwendung von compare(elem1, elem2);
for(var a = 0; a < elems.length; a++) {
this.table.removeChildNode(elems[a]);
this.table.appendChildNode(elems[a]);
}
}
Header kann dann Eventhandler so nach folgendem Schema erzeugen:
var handler = "onclick='tables[" + this.id + "]'.sortTable(" + nr + ")";
Dann kann man mit onload="" eine Initialisierungsfunktion aufrufen, die nur noch folgendes tun muss:
new Table(myCompare, myHeader, document.getElementById("tableId"));
Die DOM-Methoden stimmen vermutlich nicht alle, aber darauf kommt es ja auch nicht so an ;-)
Grüße
Daniel