Layer in anderem Frame steuern
Eva
- javascript
0 André Laugks0 Eva0 André Laugks0 Eva0 André Laugks0 Eva
habe ein frameset bestehend aus 2 frames. der obere ist navigation
und unten ist content. möchte nun mit der navigation einen layer im content-frame steuern.(visible und invisible machen)
WIE GEHT DAS???
danke! eva
Hallo!
habe ein frameset bestehend aus 2 frames. der obere ist navigation
und unten ist content. möchte nun mit der navigation einen layer im content-frame steuern.(visible und invisible machen)
Du kannst über das Frame-Objekt auf andere Frames zugreifen, dort Funktionen starten, Variablen verändern, Onjekte ansprechen usw.
parent.content.VariablenName = 3;
parent.content.FunktionsName();
parent.content.document.all.LayerName.style.visibility = "visible";
http://selfhtml.teamone.de/javascript/objekte/frames.htm
MfG, André Laugks
danke für deine prompte hilfe!
doch:
der browser (ie) gibt dann eine fehlermeldung:
"parent.content.document.layers" ist kein objekt...
ich habe 2 fkt. def.:
1.) function zeigen(name) {
if (ns) {
parent.content.document.layers[''+name].visibility = "show";
}
else {
parent.content.document.all.layers[''+name].style.visibility = "visible"
}
}
und 2.) function verbergen(name) {
if (ns){
parent.content.document.layers[''+name].visibility = "hide"
}
else {
parent.content.document.all.layers[''+name].style.visibility = "hidden"
}
}
wo kann da der hund begraben sein?
lg eva
Hallo!
der browser (ie) gibt dann eine fehlermeldung:
"parent.content.document.layers" ist kein objekt...
parent.content.document.layers[''+name].visibility = "show";
Du "baust" Dir den Namen des Layers zusammen --> ''+name .
Ich denke, das''+ ist überflüßig, da Du einen Leerstring zum Namen dazu addierst, aber das wird nicht der Fehler sein.
Gibt es den den Layer auf der Seite, den Du ansprichst? Schaue mal mit alert(), welchen Layernamen Du an die Funktion übergibst und schaue dann mal in Deinen Quellentext.
function zeigen(name) {
alert(name);
if (ns) {
parent.content.document.layers[''+name].visibility = "show";
}
else {
parent.content.document.all.layers[''+name].style.visibility = "visible"
}
}
Verwende mal als Variable nicht "name". "name" ist kein reservierter Bezeichner/Schlüsselwort, sollte aber vermieden werden. Das könnte zu einer Fehlermeldung führen.
MfG, André Laugks
ich werd wahnsinnig!!!
habe mit alert() überprüft:
<a href="#" target="content" onclick="alert(document.layer)">Internet Cafes</a>
browser sagt: "undefined"
habe aber die ebene definiert:
1.) <STYLE TYPE="text/css">
#new {position: absolute; visibility: visible; left: 200px; top: 240px;}
</STYLE>
2.) <DIV ID="new" style="left: 602px; top: 0px; width: 178px; height: 434px; z-index: 0">
usw...
lg eva
Hallo!
habe mit alert() überprüft:
<a href="#" target="content" onclick="alert(document.layer)">Internet Cafes</a>
browser sagt: "undefined"
Klar sagt der undefined!
Du solltest das alert wie bei meinem Beispiel in die Funktion einbauen.
function zeigen(name) {
alert(name);
if (ns) {
parent.content.document.layers[''+name].visibility = "show";
}
else {
parent.content.document.all.layers[''+name].style.visibility = "visible"
}
}
Kommst Du überhaupt ins andere Frame?
Erstelle einen Link im Frame "navi". Mit dem rufst Du eine Funktion im Frame "content" auf.
//"navi"
<a href="JavaScript:parent.frame.ichbindrin()">Testen</a>
//"content"
function ichbindrin()
{
alert("Ich Bin Drin");
}
habe aber die ebene definiert:
1.) <STYLE TYPE="text/css">
#new {position: absolute; visibility: visible; left: 200px; top: 240px;}
</STYLE>
2.) <DIV ID="new" style="left: 602px; top: 0px; width: 178px; height: 434px; z-index: 0">
usw...
new also Layername, nicht gut. new wird zwar als "String" übergeben, aber der Browser könnte sich dran stören. Denke Dir also Namen aus, die nicht zu den reservierten Wörtern gehören.
Schaue Dir mal die Liste reservierter Wörter an: http://selfhtml.teamone.de/javascript/sprache/reserviert.htm
Im IE gibt es einen kleinen Bug. Der IE stört sich oft an Layernamen, die auch nicht zu den reservieren Wörtern gehören. Ich setze dann einen Buchstaben vor den Layernamen und dann geht es.
MfG, André Laugks
hallo André,
tut mir leid, dass ich so eine nervensäge bin ;)
habe jetzt alles so gemacht, wie du empfohlen hast...
nun ist es so, dass wenn ich auf den link im nav, der die fkt.
im contentframe aufruft folgendes fehlermeldg. kommt:
"Objekt unterstützt diese eigenschaft od. methode nicht"
wenn ich auf die buttons(im nav), die die fkt. "zeigen" oder
"verbergen"(auch im nav. deklariert)aufrufen sollen, klicke
folgende fehlermeldg. erscheint:
"parent.content.document.all.layers ist kein objekt"
doch das alert funktioniert: es wird der richtige namen angezeigt!
wahrscheinlich ist es für dich auch sehr schwierig, mit meinen konfusen beschreibungen etwas anzufangen...
freue mich aber über jede anregung!
lg
eva
Hallo!
wahrscheinlich ist es für dich auch sehr schwierig, mit meinen konfusen beschreibungen etwas anzufangen...
Mhhhhhh, irgendwie schon...
Kannst Du das mal online stellen oder als ZIP-Datei zur Verfügung stellen? Entferne aber bitte das ganze unwichtige Zeug wie Grafiken, Texte usw.
MfG, André Laugks