Eventhandler mit mehreren Parametern
Encoder
- javascript
Hallo
Mal was einfaches. Ich sehe immer wieder Beispiele, in denen z.B. dem Event onmouseover eine Funktion mit beliebigen Parametern übergeben wird. Also etwa eine ID des überfahrenen Objekts. Da wird dann zugewiesen: onmouseover="myFunction(1, 2, 3)" und die Funktion hat auch drei Parameter.
Dann gibts Beispiele, wo der Parameter aus einem vom Browser automatisch übergebenen Objekt besteht, in dem weitere Infos stehen. wie etwa die Mausposition. Zugewiesen wird onmouseover="myFunction" und die Funktion hat einen impliziten Parameter.
Geht auch beides? Ich bräuchte grad die Mausposition in so einer Funktion und hab schon andere Parameter in ihr. Krieg ich das irgendwie hin?
Oder gibts sonst ne elegante Art um die Mausposition zu ermitteln? Ich find nur mal wieder Scripte mit Unterscheidungen für alle möglichen Browser.
Geht auch beides? Ich bräuchte grad die Mausposition in so einer Funktion und hab schon andere Parameter in ihr.
Welche Parameter willst du denn übergeben?
Bei Inline-Event-Handlern Event-Objekt und weitere Parameter übergeben:
onclick="handler(event, param1, param2, ...)"
Bei traditioneller Registrierung eines Event-Handlers mit JavaScript:
element.onclick = wrapperfunktion;
function wrapperfunktion (e) {
handler(e, "param1", "param2", ...);
}
function handler (e, param1, param2, ...) {
if (!e) e = window.event;
alert(e); // Zugriff auf das Event-Objekt
alert(param1); // Zugriff auf die Parameter
}
Geht natürlich noch eleganter, wird dann aber komplizierter.
Ich sehe immer wieder Beispiele, in denen z.B. dem Event onmouseover eine Funktion mit beliebigen Parametern übergeben wird. Also etwa eine ID des überfahrenen Objekts.
Die ID des überfahrenen Objektes brauchst du der Handlerfunktion nicht zu übergeben, du kannst mit »this« auf das Element zugreifen, bei dem der Handler registriert wurde:
element.onclick = handler;
function handler (e) {
if (!e) e = window.event;
alert(e); // Zugriff auf das Event-Objekt
alert(this); // Zugriff auf das Element mit dem Handler
}
Mathias
Danke! Das "event" kannte ich bisher nicht.
Welche Parameter willst du denn übergeben?
Ich hab den gleichen Handler für mehrere Objekte und übergebe pro Objekt einen entsprechenden Text. Den krieg ich sonst nirgends her und hab ihn direkt in der Zuweisung mit drin.