Hi und danke schon mal für die rege Diskussion.
Das geht ja richtig flott, in den Nwesgroups wo ich sonst drin bin (.NET etc.) dauert das meistens länger. ;-)
Nur leider helfen mir die Antworten bislang nicht sehr viel.
»Wieso so umständlich? Durchnumerierte IDs für die THs und dann die COLs »über document.getElementsByTagname ansprechen sollte doch gehen.
Hatte ich schon mal ein Beispiel zu gefunden. Ist allerdings nicht umsetzbar, weil das ganze (sprich die Tabelle) per ASP.NET und C# aus einer Datenbank generiert wird. Und ASP.NET hat nun mal die Angewohnheit, alles was es identifizieren muss, und das werden sicher auch einige Tabellenzellen sein, mit automatisch erzeugten IDs auzustatten. Um das zu verhindern, müssten diverse Render-Methoden überschrieben werden, was vom Aufwand her auch nicht zu unterschätzen ist. Außerdem werden einige der generierten IDs ja serverseitig gebraucht.
»Und das:
var ie=document.all;
»könntest Du auch einsparen.
Das stammt aus einem JavaScript, welches ich bei HotScripts oder so gefunden habe und Tabellenzellen oder Zeilen beim Drüberfahren hervorhebt. Und da sind die Browserweichen zwischen IE und Netscape notwendig. Ich habe das Togglen der Spalten dann in die Skriptdatei mit reingeschrieben und in meinem Posting nur die anderen Funktionen gelöscht, weil die ja nichts mit dem Problem zu tun haben.
Die Variablen ie und ns6 werden ja so belegt, dass jeweils eine der beiden (je nachdem welchen der Browser man gerade verwendet), gesetzt ist, die Andere dann nicht.
Und wie klappst du dann die Spalten wieder auf?
na mit document.getElementsByTagName('col')[0].style.display='inline'"
Alerdings fürchte ich, daß nicht alle Browser diese Zuweisungen auf das COL-Element unterstützen, so daß Du möglicherweise in einer Schleife alle TDs der betreffenden Spalte ansprechen müßtest.
Also ich habe display = "none" erfolgreich mit Firefox und IE getestet, da die Spalten dann aber weg waren und ich noch mehr/andere Probleme hatte, konnte ich sie nicht wieder einblenden.
Aber das bringt mich auf eine Idee:
Bisher wurde das Toggeln serverseitig durchgeführt, was natürlich massiv Traffic und zahlreiche Postbacks verursacht. Jedenfalls gibt es jetzt einen nach unten zeigenden Pfeil zum zuklappen (am Anfang ist ja alles sichtbar), der an den Server sendet, welche Spalte getoggelt werden soll. Diese wird dann zugeklappt und gar nicht mit übertragen. Der Pfeil zeigt dann nach rechts. Beim Aufklappen werden die Zellen dann wieder mit gerendert.
Es müsste dann ja möglich sein, links neben jeder Datenspalte eine zusätzliche Spalte zu definieren, die nur ein TH ohne rechten Rahmen und keine TDs enthält. Das TH enthält dann den Pfeil, der mit einem onClick verbunden ist. Dieses kann dann die Col entweder über den Index des TH-Elements oder über eine ID der Col aus- oder einblenden.
Hier ist ein kurzes Beispiel (der Inhalt der Tabelle ist etwas blöd, aber darum geht es ja nicht):
<table border="0" cellspacing="0" cellpadding="0">
<colgroup>
<col width="10"/>
<col id="date"/>
<col width="10" />
<col id="ip" />
</colgroup>
<tr>
<th class="togglehead" onclick="alert('Toggle Datum');">> /th>
<th>Datum</th>
<th class="togglehead" onclick="alert('Toggle IP-Adresse');">> </th>
<th>IP-Adresse</th>
</tr>
<tr>
<td class="togglecol"></td>
<td>heute</td>
<td class="togglecol"></td>
<td>localhost</td>
</tr>
<tr>
<td class="togglecol"></td>
<td>gestern</td>
<td class="togglecol"></td>
<td>127.0.0.1</td>
</tr>
</table>
Immerhin sparst Du Dir die obskure Verwendung des title-Attributes..;-)
Ist zu empfehlen, wusste mir nur gerade nicht anders zu helfen. Was besseres, das von beiden Browsern unterstützt wird, konnte ich so schnell nicht finden.
Schönen Abend noch.
Marco