Ausgelagertes JavaScript
Wullschi
- javascript
Hallo
Ich habe versucht ein Script zu schreiben, welches mir 3 Bilder in der Navigation auswechselt. Das funktioniert soweit auch. Ich habe aber das Problem, dass sich beim aufruf eines anderen Links, wieder die Ausgangsbilder erscheinen.
Ich dachte nun, dass sich das lösen lässt indem ich mein javascript auslagere, um es für alle Seiten zugänglich zu machen.
Das Bild das vor dem Aufruf der Seite ausgewählt war soll mit onLoad="laden()" wieder erscheinen. Das klappt aber leider nicht… kann sich das vielleicht mal jemand anschauen, der mehr von JavaScript versteht?
var i;
function wechsel1()
{
nav1.src='navi11.jpg';
nav2.src='navi12.jpg';
nav3.src='navi13.jpg';
i=1;
}
function wechsel2()
{
nav1.src='navi21.jpg';
nav2.src='navi22.jpg';
nav3.src='navi23.jpg';
i=2;
}
function laden()
{
if (i==1) {
wechsel1();
}
if (i==2) {
wechsel2();
}
}
hi,
Ich habe aber das Problem, dass sich beim aufruf eines anderen Links, wieder die Ausgangsbilder erscheinen.
Ich dachte nun, dass sich das lösen lässt indem ich mein javascript auslagere, um es für alle Seiten zugänglich zu machen.
Nein, das kannst du vergessen.
Wenn du eine neue Seite lädst, startet auch dein Javascript wieder bei Null - es weiß nichts von anderen Scriptinstanzen, die in vorherigen Seiten ausgeführt wurden.
Das Bild das vor dem Aufruf der Seite ausgewählt war soll mit onLoad="laden()" wieder erscheinen. Das klappt aber leider nicht…
Natürlich nicht. Du fragst dort eine Variable i auf ihren Wert ab - bevor aber nicht eine der beiden anderen Funktionen innerhalb der aktuellen Seite aufgerufen wurde, hat diese gar keinen definierten Wert.
Du musst dir eine Möglichkeit überlegen, die letzte Auswahl von der vorherigen Seite irgendwo zwischenzuspeichern - das kann bspw. in einem Cookie sein (wenig zuverlässig), oder an Hand eines an jeden site-internen Link angehängten Parameters dynamisch entschieden werden (aufwendig).
gruß,
wahsaga
Vielen Dank!
Ich habe über die Zwischenspeicherung hier einen Artikel gefunden.
Es reicht, wenn ich den wert in self.name übergebe…
function wechsel1()
{
nav1.src='navi11.jpg';
nav2.src='navi12.jpg';
nav3.src='navi13.jpg';
self.name="a"
}
function wechsel2()
{
nav1.src='navi21.jpg';
nav2.src='navi22.jpg';
nav3.src='navi23.jpg';
self.name="b"
}
function laden()
{
if (self.name=="a") {
wechsel1();
}
if (self.name=="b") {
wechsel2();
}
}