'Function' funktioniert nur teilweise
Intruder
- javascript
Hallo,
ich habe ein Website mit zwei Frame gebaut.
Im Oberen Framen 'oben' soll ein Link stehen, der beim anklicken eine Funktion ausführt, die den Inhalt des unteren Frames genannt 'fenster' gegen eine eine in einem Variablen-Feld angelegte Linkliste der Reihe nach austauscht. Soll heißen: der erste Klick ruft die seite1.html auf, der zweite Klick die seite2.html usw.
Ich habe versucht, dies mit JavaScript umzusetzen, was dann wie folgt aussieht:
---------------------------------------------------------
<script>
a = new Array();
a[0] = "seite1.html";
a[1] = "seite2.html";
a[2] = "seite3.html";
i = 0;
function fwd()
{
parent.fenster.document.location.href = a[i] ;
i++;
}
</script>
<a href="" onClick="fwd()">Link</a>
-------------------------------------------------------------
Beim ersten Klick auf den 'Link' wird tatsächlich die erste (unter a[0] gespeicherte) Seite angezeigt, jedoch beim zweiten Klick passiert nichts mehr.
Mir scheint, dass die Variable "i" nicht um den Faktor 1 erhöht wird.
Was mache ich falsch?
Hi!
Mir scheint, dass die Variable "i" nicht um den Faktor 1 erhöht wird.
Wenn Du diese Vermutung hast, verschaff Dir doch Gewissheit. Gibt Dir i aus.
function fwd()
{
alert('Anfang: ' + i);
parent.fenster.document.location.href = a[i] ;
i++;
alert('Ende: ' + i);
}
Das nennt man Debugging und macht ohne ensprechende Tools unglaublich viel Spass. :)
Daran bis zu welchem alert du kommst, kannst Du sehen ab wo dein Fehler auftaucht und ihn so einkreisen.
Hallo Intruder,
ich habe ein Website mit zwei Frame gebaut.
hm.. Ist keine andere Lösung möglich?
<script>
Du hast das notwendige type-Atribut vergessen.
<a href="" onClick="fwd()">Link</a>
Mir scheint, dass die Variable "i" nicht um den Faktor 1 erhöht wird.
Was mache ich falsch?
Doch, wird sie. Aber nachdem der Link geklickt und das onclick-Event ausgeführt wurde wird dem Link gefolgt. Es wird dsa gleiche Dokument einfach noch einmal geladen, sodass i wieder auf 0 steht. Ein weiterer Klick macht es wieder auf 1, der Frame oben wird neu geladen, dann der untere. Ist dir das nicht aufgefallen?
Füge dem onclick noch ein "return false" hinzu, dann wird der Link nicht weiter aufgerufen und dein Problem sollte gelöst sein.
Grüße
David
Also ich habe dann folgendes gemacht:
--------------------------------------
i = 0;
function fwd()
{
alert('Anfang: ' +i);
parent.fenster.document.location.href = a[i] ;
i++;
alert('Ende: ' +i);
}
<a href="" onClick="fwd(); return false">Link</a>
-----------------------------------------
Jetzt passiert folgendes:
Beim ersten Anklicken wird der Alert-Anfang mit dem Wert 0 wieder gegeben, dann die gewünschte Website geladen und tatsächlich der Alert-Ende mit dem Wert 1 ausgegeben.
Beim zweiten Anklicken wird der Alert-Anfang wieder mit dem Wert 0 ausgeben .... und nichts weiter passiert.
Korrektur:
beim zweiten Anklicken wird beim Alert-Anfang der Wert 1 ausgeben und nichts weiter passiert - keine Seite wird geladen, kein Alert-Ende.
Bei einem weiteren Klick wird beim Alert-Anfang wieder der Wert 0 angezeigt und nichts weiter passiert.
Korrektur:
beim zweiten Anklicken wird beim Alert-Anfang der Wert 1 ausgeben und nichts weiter passiert - keine Seite wird geladen, kein Alert-Ende.
Bei einem weiteren Klick wird beim Alert-Anfang wieder der Wert 0 angezeigt und nichts weiter passiert.
Meine Fehler-Konsole sagt übrigens folgendes:
Fehler: uncaught exception: Die Erlaubnis für das Lesen der Eigenschaft HTMLDocument.location wurde verweigert
Meine Fehler-Konsole sagt übrigens folgendes:
Fehler: uncaught exception: Die Erlaubnis für das Lesen der Eigenschaft HTMLDocument.location wurde verweigert
Neben dem überflüssigen Doppelposting, hast du doch hier http://forum.jswelt.de/javascript/39420-onclick-funktion-wird-nur-einmal-ausgefuehrt.html bereits eine richtige Antwort bekommen?
Was hast du daran nicht verstanden?
Struppi.
Meine Fehler-Konsole sagt übrigens folgendes:
Fehler: uncaught exception: Die Erlaubnis für das Lesen der Eigenschaft HTMLDocument.location wurde verweigertNeben dem überflüssigen Doppelposting, hast du doch hier http://forum.jswelt.de/javascript/39420-onclick-funktion-wird-nur-einmal-ausgefuehrt.html bereits eine richtige Antwort bekommen?
Was hast du daran nicht verstanden?Struppi.
Nun, mein Englisch ist schlicht und ergreifend nicht besonders ... wie mein Java eben auch. Sorry für dass Doppelposting, aber ich ging davon aus, dass die unteren Einträge niemand mehr beachtet.
Nun, mein Englisch ist schlicht und ergreifend nicht besonders ...
Das heißt? Du hast gar nichts verstanden? Du hast mal versucht eine deutsprachige Erklärung für den Begriff zu suchen?
Struppi.
Nun, ich habe inzwischen verstanden, dass mein Vorhaben so wie ich mir das vorgestellt habe nicht machbar ist, und arbeite daher momentan an 'ner Serverseitigen Lösung per PHP.