function toggleVis(pre) {
if (document.getElementByID('table_' + pre).style.display == ''){
document.getElementByID('table_' + pre).style.display = 'none';
...
}else{
document.getElementByID('table_' + pre).style.display = '';
...
}
}
Wenn du davon ausgehst, dass im Quellcode immer style="display:none" steht, sind diese Abfragen nicht notwendig. Eine Abfrage ist aber nicht verkehrt.
Das einzige Problem ist, dass der MSIE nicht mit display:table-row-group zurechtkommt, sondern display:block fordert. Dementsprechend braucht man eine MSIE-Abfrage, am besten fragt man über currentStyle ab, ob der display-Wert eines sichtbaren tbody-Elements auf »block« steht. Das ist die einzig zuverlässige und zukunftsfähige Abfragemöglichkeit.
var tbody_block = false;
function toggleVis (pre) {
var tbody = document.getElementById("table_" + pre);
if (tbody.style.display != "none") {
if (tbody.currentStyle && tbody.currentStyle.display == "block")
tbody_block = true;
tbody.style.display = "none";
} else {
if (tbody_block)
tbody.style.display = "block";
else
tbody.style.display = "table-row-group";
}
}
Bei dem Beispiel muss die Funktion zuerst auf ein sichtbaren tbody angewendet werden, um ihn zu verstecken, ansonsten schlägt das Sichtbarmachen fehl. (Man kann natürlich auch beim Laden des Dokuments ein beliebigen sichtbaren tbody als Indikator benutzen, um tbody_block zu setzen.)
Mathias