molily: showhide mit Klassen

Beitrag lesen

if (document.all) { //IS IE 4 or 5 (or 6 beta)
eval( "document.all." + layer_ref + ".style.visibility = state");
}
if (document.layers) { //IS NETSCAPE 4 or below
document.layers[layer_ref].visibility = state;
}

Diesen Teil kannst du wegwerfen. Diese Browser sind ausgestorben. Und dieser Code setzt auch nicht den Zugriff auf Elemente anhand einer Klasse um.

if (document.document.getElementsByClassName && !document.all) {
maxwell_smart = document.document.getElementsByClassName(layer_ref);
maxwell_smart.style.visibility = state;

getElementsByClassName ist schon richtig, allerdings gibt dir diese Methode eine Liste von Elementen zurück. Du kannst nicht direkt .style.visibility davon ansprechen. Du musst die Liste mit einer Schleife durchlaufen und jedem Element darin die neue visibility zuweisen.

if (!document.getElementsByClassName) return;  
var elements = document.getElementsByClassName(className);  
for (var i = 0, l = elements.length, element; i < l; i++) {  
  element = elements[i];  
  element.style.visibility = state;  
}

Allgemein kannst du so etwas mit geeigneten CSS-Regeln und einer kleinen JavaScript-Änderung vereinfachen:

.agent99-visible .agent99 { visibility: visible; }

Dann brauchst du nur noch setzen:

document.body.className = 'agent99-visible';

und alle Element der Klasse werden eingeblendet (sofern Inline-Style diese Regel nicht überschreiben).

Mathias