verlinkung mit window.location.search
Sören
- javascript
hallo!
nun da ich jetzt meinen layerwechsel hinbekommen habe (danke gunnar! es lag auch u.a. daran dass ich i nicht von 1 sondern von 0 loslaufen liess!) möchte ich von ausserhalb direkt auf die divs verlinken. das möchte ich mit einer switch-bedingung lösen:
switch(window.location.search != "") {
case "?f1":
document.getElementById(f1).style.visibility = "visible";
break;
case "?f2":
document.getElementById(f2).style.visibility = "visible";
break;
.
.
.
}
location.search fand ich angebracht da ich gelesen habe dass man damit sogar formulare vorschreiben kann. die links verweisen dann bei mir mit href="tunnelinggal.htm?f1" zB
f1-f7 sind hierbei die ids der einzelnen layer. scheinbar hab ich wieder mannigfaltig viele fehler begangen da nicht mal ein wohl platzierter alert beim aufrufen der verlinkung auftaucht. ich wäre sehr dankbar für ein paar verbesserungsvorschläge hierzu.
Sören
Hallo,
nun da ich jetzt meinen layerwechsel hinbekommen habe (danke gunnar! es lag auch u.a. daran dass ich i nicht von 1 sondern von 0 loslaufen liess!) möchte ich von ausserhalb direkt auf die divs verlinken. das möchte ich mit einer switch-bedingung lösen:
switch(window.location.search != "") {
case "?f1":
document.getElementById(f1).style.visibility = "visible";
break;
case "?f2":
document.getElementById(f2).style.visibility = "visible";
break;
Wenn location.search gefüllt ist, ergibt (window.location.search != "") true, also ist es dasselbe, als wenn du switch (true) ... notieren würdest. Beim ersten case vergleicht er also true == "?f1". Da gefüllte Strings bei der Umwandlung in Boolean immer true ergeben, steigt er bei case "?f1": in jedem Fall ein und macht f1 sichtbar, egal, was in location.search steht.
Du müsstest also switch(window.location.search) ... schreiben und die Abfrage, ob location.search überhaupt gefüllt ist, davorschalten (bzw. sie wäre höchstens nötig, wenn du im else-Fall Anweisungen ausführen willst).
Mathias
hi,
Du müsstest also switch(window.location.search) ... schreiben und die Abfrage, ob location.search überhaupt gefüllt ist, davorschalten (bzw. sie wäre höchstens nötig, wenn du im else-Fall Anweisungen ausführen willst).
den nicht-gefüllt-fall könnte man ggf. auch, wenn alle gefüllt-fälle ihre eigenen cases haben, per default abhandeln.
gruß,
wahsaga
hallo,
die switch-bedingung scheint nun wunderbar zu funktionieren zumindest gibt er mir das alert an folgender stelle wunderbar aus:
switch(window.location.search) {
case "?f7":
alert(window.location.search);
document.getElementById(f7).style.visibility = "visible";
break;
}
der layer erscheint trotzdem nicht. liegt es an der css anweisung im head (visibility: hidden) oder ist die art wie ich den layer im javascript anspreche falsch? die id stimmt ja soweit mit der im body überein.
Sören
hi,
document.getElementById(f7).style.visibility = "visible";
welchen wert hast du der javascript-variablen f7 zugewiesen, bevor du sie hier ansprichst?
gruß,
wahsaga
hi,
ich habe f7 eigentlich keinen wert gegeben. es ist nur die id des siebten layers. und den layern habe ich folgende style-anweisungen gegeben:
.original {position:absolute; top:80px; width:510px; height:440px; visibility:hidden;}
aber daran kanns ja auch nicht liegen.
Sören
hi,
ich habe f7 eigentlich keinen wert gegeben. es ist nur die id des siebten layers.
nein, so wie du es derzeit verwendest, ist es der zugriff auf eine javascript-variable mit dem namen f7.
wenn du stattdessen den textstring "f7" übergeben möchtest - nun ja, schon anhand der von mir gewählten schreibweise sollte erkenntlich sein, was du dann zu tun hättest.
gruß,
wahsaga
Hallo Sören,
switch(window.location.search != "") {
case "?f1":
document.getElementById(f1).style.visibility = "visible";
break;
case "?f2":
document.getElementById(f2).style.visibility = "visible";
break;
.
.
.
}
Und warum so kompliziert?
var MyId = window.location.search;
if (MyId) {
MyId = MyId.substring(1,MyId.length);
document.getElementById(MyId).style.visibility = "visible";
}
Das sollte funktionieren.
Auf Wiederlesen
Detlef
hallo detlef,
var MyId = window.location.search;
if (MyId) {
MyId = MyId.substring(1,MyId.length);
document.getElementById(MyId).style.visibility = "visible";
}
so ähnlich hatte ich mir das am anfang auch gedacht. ich habe dann aber mal mir window.location.search mit alert ausgeben lassen und es wird tatsächlich das fragezeichen mitgesendet. deswegen habe ich auf switch gesetzt um die einzelnen layer ansprechen zu können. leider keine wirkung bisher.
Sören
Hallo Sören
... ich habe dann aber mal mir window.location.search mit alert ausgeben lassen und es wird tatsächlich das fragezeichen mitgesendet.
Natürlich.
Was meinst du, was "MyId = MyId.substring(1,MyId.length);" macht?
Lies mal
http://de.selfhtml.org/javascript/objekte/string.htm#substring und
http://de.selfhtml.org/javascript/objekte/string.htm#length.
... deswegen habe ich auf switch gesetzt um die einzelnen layer ansprechen zu können. leider keine wirkung bisher.
Weil ein Zeichen zuviel ist, treibst du so einen Aufwand?
Auf Wiederlesen
Detlef
ok danke ich seh jetzt bei deinem script durch! leider erscheint immer noch kein layer. ich habe die html mal eben hochgeladen vielleicht findet einer von euch den fehler:
http://www.mynos.de/finish2/tunneling.htm
einfach auf einen der blaumarkierten links klicken dann sollte es zur galerie gehen.
Sören
Hallo Sören
... leider erscheint immer noch kein layer. ich habe die html mal eben hochgeladen vielleicht findet einer von euch den fehler:
Ich habe nur einmal kurz nachgesehen.
Jetzt überlege bitteeinmal:
Wann wird des Script ausgeführt?
Wann werden die (versteckten) Divs gezeichnet?
Gibt es diese überhaupt schon, wenn das Scrip ausgeführt wird?
Tipp:
http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onload
Auf Wiederlesen
Detlef