Fortsetzung des archivierten Threads:
Hi Gernot,
Dann ist meine Lösung vielleicht gar nicht komplizierter (38 Zeilen reiner JS-Code)!
Wie man's nimmt. Die Verwendung von innerHTML (statt z.B. einer CSS-Hintergrundgrafik "+/-") hat dich etwas "gerettet". ;-)
Außerdem sind dir natürlich die Opera-User dankbar, weil dessen JS-Fähigkeiten zwar lausig sind, aber für deine Variante reicht's noch. ;->
Kürzer ginge es ansonsten halt ohne das ganze init() mit einem einfachen
// Setzen der Eigenschaft display in Regel Nr.5 des Stylesheets Nr.1
if(setStyle(0,5,"display","none")) {
setStyle(0,1,"cursor","n-resize");
} else {
alert("Ich mach nix! Der Browser ist technisch nicht aktuell!")
}
wobei setStyle dann so aussehen kann:
function setStyle(sheet,rule,attrib,value) {
if(document.styleSheets) {
((document.styleSheets[sheet].cssRules)?document.styleSheets[sheet].cssRules[rule].style:document.styleSheets[sheet].rules[rule]).style[attrib]=value;
return true;
} else {
return false;
}
}
Sollen mehrere Tabellen/Blöcke mittels einer einzigen Klasse so gewechselt werden, emfiehlt es sich natürlich wirklich, mit className zu arbeiten. Aber man könnte auch die Klasse show per setStyle(0,5,"display","none") verstecken, und beim (ersten) Aufruf von aufZu() mit setStyle(0,5,"display","") wiederherstellen und anschließend ganz normal mit className zu arbeiten. Und da nicht mit innerHTML gearbeitet wird (man könnte ja eben auch ein "+/-" mittels setStyle ändern), würde auch der Code innerhalb der Seite entfallen. Man kann so ja alles mit JS verstecken, bevor der BODY überhaupt beginnt ...
Gruß, Cy-"viele Wege führen nach Rom"-baer
PS: Selbst der neue Opera 8 unterstützt immer noch nicht styleSheets. Na ja, es reicht ja auch, wenn wirklich wichtige Browser wie IE, Mozilla, Konqueror und Safari das tun. ;-> (soviel auch zum Thema "Opera und Standards")
Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!