Hallo Struppi,
Da ist fehlerträchtig, langsamer und führt im Netscape vermehrt zu Abstürzen und zu allem Überdruss ist es auch noch überflüssig:
if (document.layers) {
document.layers[divid].visibility='show';
}
Ähm ja, natürlich. Jetzt habe ich mich selbst verwirrt durch meine Bemerkung, wie man Layer in NC 4 ansprechen kann. Wenn die Nummer des Layers bekannt ist, geht das natürlich so, wie du oben geschrieben hast. Aber geht das auch, wenn nur der Name (aus dem name-Attribut im layer-Tag) bekannt ist? Allerdings ist dann natürlich auch mein Vorschlag falsch, es müsste heißen:
eval("document." + divid + ".visibility = 'show');
(unter der Annahme, dass in divid der Name, nicht die Nummer des Layers gespeichert ist.)
Aber das steht auch alles in der von mir geposteten Rubrik.
Meinst du "Objekt-Handling in JavaScript"? Liegt gerade im Ausgabefach meines Druckers ;-)
<besserwisserisch>(Fällt mir gerade auf: Müsste es nicht eigentlich entweder "Object-Handling" (mit "c") oder "Objekt-Bearbeitung" heißen?)</besserwisserisch>
Es gibt genau drei Methoden um Layer per JS zu finden und anzusprechen
function getLayer(id)
{
if(document.layers) return document.layers[id];
else if(document.getElementById) return document.getElementById(id);
else if(document.all) return document.all[id];
alert('Der Browser kann kein dHTML");
return null;
}
Irgendwie kann ich mich mit der Bezeichnung "Layer" für div-Tags noch nicht ganz anfreunden, auch wenn es rein sprachlich korrekt ist...
Ich habe (als ich DHTML-geschrieben habe) immer zwischen Layern und divs unterschieden. Die einen waren die Netscape-Lösung und ließen sich über das document.layers-Objekt ansprechen. Die anderen waren die Microsoft-Alternative und hörten auf document.all, wie alles im IE (DOM-fähige Browser gab's damals noch nicht). Deswegen habe ich mit dem Ansprechen von Layern auch nur das Ansprechen von layer-Tags (also <layer ...>...</layer>) über das document.layers-Objekt gemeint, also das, was oben im ersten if-Zweig steht.
Robert