wie "this" in einer funktion finden?
Andi
- javascript
Hallo,
Ich möchte per onmouseover ein Skript checkClass() aufrufen. In der Funktion selbst würde ich dann natürlich gerne auf den Tag selber verweisen, wie this.className='irgendwas'.
Wie geht das?
Gruß
Andi
Hallo Andi,
du kannst einfach beim Aufruf der Funktion this mitgeben und in der Funktion kannst du es dann einfach verändern.
z.B.
function checkclass(this)
{
this.style.background = "red";
}
Ich hoffe ich habe dich richtig verstanden und es beantwortet deine Frage.
Viele Grüße
Bene
Hallo Bene,
Du hast mich zwar richtig verstanden, aber irgendwie funzt das trotzdem nicht. Der Skript Debugger sagt "missing formal parameter" bei "function doHoverCSS(this) {".
Gruß
Andi
Hi,
Du hast mich zwar richtig verstanden, aber irgendwie funzt das trotzdem nicht. Der Skript Debugger sagt "missing formal parameter" bei "function doHoverCSS(this) {".
"this" ist ein ziemlich unglücklicher Name für einen Parameter/eine Variable:
onmouseover="checkclass(this);" // soweit ok
function checkClass(sourceElement) {
sourceElement.class="xyz";
}
MfG
Rouven
Hallo,
ja ok, ich gib zu this ist mehr als unglücklich. Ich hab in meinem Test auch einen anderen Namen gehabt, dann aber gedacht wenn ich die beiden gleich nenne, ist es einleuchtender. Das ging wohl nach hinten los...
Als Variablennamen keine Schlüsselwörter verwenden!!! Das merk ich mir jetzt :-)
Viele Grüße
Bene
Hi Andi!
Du hast mich zwar richtig verstanden, aber irgendwie funzt das trotzdem nicht. Der Skript Debugger sagt "missing formal parameter" bei "function doHoverCSS(this) {".
Und du möchtest bestimmt wissen, was du falsch gemacht hast?! Vielleicht solltest du dazu mehr Information herausgeben.
MfG H☼psel
Hallo,
Du hast mich zwar richtig verstanden, aber irgendwie funzt das trotzdem nicht. Der Skript Debugger sagt "missing formal parameter" bei "function doHoverCSS(this) {".
Du kannst einen Parameter nicht this nennen.
Noch einmal zur Verdeutlichung:
Wenn du eine Handler-Funktion in einem HTML-Attrbut aufrufst, musst du der Handler-Funktion dort »this« als Parameter übergeben, wenn du dort auf das Element zugreifen willst:
<p onmouseover="handler(this)">Text</p>
In der Funktion nutzt du dann den Parameter, der auf das Element verweist:
function handler (element) {
element.className = "klasse";
}
»this« kannst du in dem Fall direkt nicht nutzen, das Angeben in der Parameterliste nützt wie gesagt nichts. (Du könntest this zwar einsetzen, es würde aber auf window verweisen.)
Wenn du den Event-Handler über JavaScript registrierst, also nicht mit Attributen im HTML-Code arbeitest, dann verhält sich die Sache anders:
<p id="absatz">Text</p>
document.getElementById("absatz").onmouseover = handler;
Oder:
document.getElementById("absatz").addEventListener("mouseover", handler, false);
Die Handler-Funktion bekommt dann (außer im IE) als ersten Parameter das Event-Objekt. In dem Fall kannst du mit »this« direkt auf das Element zugreifen, dessen Event-Handler ausgeführt wird:
function handler (ev) {
this.className = "klasse";
}
Mathias
Vielen Dank Mathias,
Was mich noch vom addEventListener abhält ist die fehlende Kompatibilität zu älteren Browsern. auch die Hacks haben mich bisher nicht überzeugt.
Gruß
Andi