molily: this.form has no properties

Beitrag lesen

Hallo,

function EineFunktion(this) {
  var foo = this.form.Ausgabe.value

this verweist in der Funktion immer auf window, du kannst keinen Parameter so nennen. window.form gibts natürlich nicht.

In der Funktionsdeklaration "EineFunktion(this)" ist es, so habe ich bereits herausgefunden, sehr "unglücklich", weshalb ich es dort bereits durch foobar ersetzt habe.
Nun erhalte ich nur noch den Fehler "this.form has no properties".

Das übergebene Elementobjekt steht dann unter foobar zur Verfügung, also musst du auch damit arbeiten (foobar.form).

Allgemein:

Wenn du JavaScript-Logik im HTML notierst nach dem Schema <element onevent="...">...</element>, dann hast du im JavaScript-Code, der im onevent-Attribut steht, Zugriff auf das Elementobjekt über »this«.

Wenn du darin jetzt irgendeine Funktion aufrufst, so wird diese Funktion nicht mehr im Kontext des Elementobjektes ausgeführt, wie es für den JavaScript-Code im Attribut der Fall ist. Das heißt, »this« zeigt darin *nicht* auf mehr das Elementobjekt, sondern auf window (das oberste/globale Objekt).

Wenn man also eine Handler-Funktion auf diese Weise aufruft und darin das Elementobjekt braucht, übergibt man ihr mit »this« eine Referenz auf das Elementobjekt, bei dem der Event passiert bzw. vorbeikommt:

onevent="handler(this)"

Die Handlerfunktion muss diesen Parameter dann entgegennehmen. Die Variable, unter der der Parameter innerhalb der Funktion gespeichert wird, kann aber nicht wieder »this« heißen, sondern z.B. »elementobjekt«:

function handler (elementobjekt) {
   alert(elementobjekt);
   // hingegen:
   alert(this);
}

this ist ein reserviertes Wort, das in diesem Fall auf das window-Objekt zeigt.

Mathias