3.9k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von floooooo Einsteiger_in (3 Punkte)
Hi zusammen,

ich knoble gerade an einem komischen Problem:

Ich habe im Head einer Seite eine Javascript-Funktion definiert (es ist egal, ob ich das in einem script-Block im head mache oder eine externe Datei referenzierte, die die Funktionsdefinition enthält). Nenn wir sie mal meineFunktion().

So, es gibt ja nun prinzipiell 2 Möglichkeiten, so ne Funktion aufzurufen, wenn jemand wohin klickt, und zwar entweder:

<a href="#" onClick="meineFunktion()">Klick hier</a>


oder:

<a href="javascript:meineFunktion()">Klick hier</a>



Beides sind standardkonforme Varianten, außerdem ist die Seite transitional, die Browser parsen also sowieso im Quirks-Mode (hoffentlich... ;-)

Das komische ist nun: Variante1 funktioniert, Variante2 funktioniert nicht, Netscape sagt mir hier: Die Funktion meineFunktion() ist nicht definiert, der IE sein standardmäßiges "Objekt nicht gefunden".

Gibts ne Erklärung, warum? Und wie man das trotzdem mit der 2ten Variante lösen kann?

Danke für Eure Hilfe!

7 Antworten

0 Punkte
Beantwortet von starkheim Einsteiger_in (5 Punkte)
Probiers mal so:
<a href="javascript: document.meineFunktion()">Klick hier</a>
dann müßte es funktionieren.
Ist ja eigentlich auch Logisch.
mfg
Starkheim
0 Punkte
Beantwortet von katy Mitglied (787 Punkte)
@Starkheim:
Der Beitrag ist 5 Jahre alt, wahrscheinlich istd as Problem indessen gelöst oder bedeutungslos geworden ;-)

Nichtsdestotrotz möchte ich deine Behauptung mit document hier nicht so stehen lassen.

In JavaScript werden alle Objekte, die nicht im Kontext anderer Objekte stehen, im window-Objekt angelegt. Dazu gehören alle globalen Variablen und Funktionen. Statt meineFunktion() kannst du also allenfalls window.meineFunktion() nutzen oder statt window eine andere Referenz auf das entsprechende Fenster.

katy
0 Punkte
Beantwortet von Experte (1.1k Punkte)
Hallo

versuchs doch mit span:
<span onclick="meineFunktion();">KLICK</span>

Muss da eh nich noch ein semikolon ran, wenn man onClick benutzt?

mfg
TByte
0 Punkte
Beantwortet von katy Mitglied (787 Punkte)
@TByte: Nein!
0 Punkte
Beantwortet von Experte (1.1k Punkte)
nein zu span oder nein zu semikolon?

mfg
TByte
0 Punkte
Beantwortet von supermax Experte (4.8k Punkte)
Das Semikolon am Ende ist nicht erforderlich; ich habe es mir allerdings auch angewöhnt, an dieser Stelle ein Semikolon zu setzen - syntaktisch erlaubt ist es ja jedenfalls.
0 Punkte
Beantwortet von Experte (1.1k Punkte)
joa, da beugt man fehlern vor

mfg
TByte
...