Hallo Wahsaga,
Die für die jeweilige Sortierung relevanten Werte kann ich ja im Falle des Dateinamens ganz einfach auslesen - aber für Größe und Datum ist das nicht so einfach, weil diese natürlich "schön" formatiert dargestellt werden sollen - Größe ja nachdem in Bytes, KB oder MB, und das Datum natürlich auch in lesbarer Form.
Welchen Weg würdet ihr wählen, um die für's Javascript benötigten Attribute im HTML-Code abzulegen, und warum?
Zwei Lösungsvorschläge:
Zum einen haben die Jungs und Mädels der Microformats-Bewegung für sich die Lösung erdacht, bessere (vollständigere) Daten mittels <abbr> und dessem title-Attribut darzustellen, in der Form eines Datums sähe das dann so aus:
<p>Die Party beginnt am <abbr class="date" title="2006-07-10T22:00:00+02:00">zehnten um zehn Uhr abends</abbr>. Seid da!</p>
Etwas mehr Information dazu findest Du im Microformats-Wiki:
• abbr-design-pattern
• datetime-design-pattern
Und ja, wenn man nicht mit XPath arbeitet, wie das viele dort zu tun scheinen, ist das mit normalen DOM-Methoden einen Hauch nerviger zu verarbeiten, weil ein weiteres Element vorhanden ist, ja.
Zweite Möglichkeit, die mir in den Sinn kommt, ist es, eigene Daten beinhaltende Attribute zu definieren und diese in einem XML-Namensraum zu stopfen:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:my="tag:tepasse.org,2006-07-06:selfhtml/wahsaga">
...
<tr>
<th class="filename"><a href="p0rn.jpg">p0rn.jpg</a></th>
<td class="size" my:size="1049600">1.1 MebiByte</td>
<td class="last-changed" my:date="2006-07-06T19:12:00+02:00">gerade eben</td>
</tr>
Ja, die Validität nach der DTD ist dann kaputt, es sei denn, Du erweiterst diese lokal und hartkodierst das Präfix damit in der DTD fest. XML-Namensräume und DTDs vertragen sich eben nicht wirklich.
Ansonsten wäre meine Methode wohl auch mittels JSON Syntax die Daten noch einmal zusätzlich mitzuliefern, also entweder in einem zusätzlichen script-Element oder aber – ins Blaue reingedacht – in einem (oder bei mehreren zu sortierenden Tabellen in mehreren) object-Elementen im head zu verstecken. Ein generisches unaufdringliches Tabellensortier-Skript könnte dann die Seite auf sortierbare Tabellen untersuchen, dann nach object-Elementen mit den passenden Datenstrukturen suchen und diese einander zuordnen. Ohne sich den Namensraum zu verschmutzen. Allerdings wird dass dann wieder viel Aufwand und viel Code für wenig Nutzen, der Hauptnutzen wäre dann rein ästhetischer Natur.
Tim