molily: In Funktion auslagern

Beitrag lesen

Was ist mit this?

Das Schlüsselwort this löst je nach Kontext zu einem unterschiedlichen Objekt auf. Allgemein gilt: Wenn eine Funktion über objekt.methode() als Methode eines Objekts aufgerufen wird, zeigt this auf das Objekt. Andernfalls zeigt es als Rückgriff auf das globale Objekt window.

<form onsubmit="[code lang=javascript]alert(this)">[/code]

Hier zeigt this auf das form-Element, weil intern eine Funktion erzeugt wird, die in der Eigenschaft onsubmit des form-Elementobjekts gespeichert wird. Beim Eintreten des Ereignisses wird intern sozusagen formElement.onsubmit(event) aufgerufen, daher zeigt this auf das form-Elementobjekt.

<script>  
[code lang=javascript]function meinefunk () {  
   alert(this);  
}

</script
<form onsubmit="meinefunk()">[/code]

Hier zeigt this nicht mehr auf das form-Element, sondern mangels Kontext auf das globale Objekt window. »this« vererbt sich hier also nicht.

Wenn du in der ausgelagerten Funktion auf das Formular zugreifen willst, dann kannst du das DOM-Elementobjekt an die Funktion als Parameter übergeben (hier wird auch zusätzlich das Event-Objekt übergeben):

<script>  
[code lang=javascript]function meinefunk (event, formElement) {  
   alert(formElement);  
}

</script
<form onsubmit="meinefunk(event, this)"> [/code]

Siehe auch
http://molily.de/js/organisation-verfuegbarkeit.html#this
http://www.quirksmode.org/js/this.html
http://javascriptweblog.wordpress.com/2010/08/30/understanding-javascripts-this/

Mathias