Element welches ein Ereignis ausgelöst hat
Helmut
- javascript
Hallo,
ich habe mir eine Funktion geschrieben welches den onkeypress-Event eines Eingabefelds behandelt. Um herauszufinden, von welchem Element der Event ausgelöst wurde, bin ich wie folgt vorgegangen
<input ... onkeypress="kPress(this);">
function kPress(handle)
{
// Auslösendes Element nun in 'handle'
}
Nun habe ich aber gemerkt, dass ich das Event-Objekt benötige, welches von FireFox und Opera automatisch an die Eventfunktion gesendet wird:
function kPress(e)
{
// Event-Object e verfügbar
}
Jetzt muss ich aber dennoch das aufrufende Element ermitteln können. Wie kriege ich die beiden Parameter "e" und "handle" im Event unter einen Hut? Wenn ich beide Parameter in der Parameterliste angebe, funktioniert das nicht.
Im IE habe ich ein globales Objekt namens event. Da ist es kein Problem. In FireFox und Opera wird das aber scheinbar lokal erzeugt.
Weiß jmd. Rat?
Danke
Hallo,
Deine Freunde heißen event.target und event.srcElement (siehe z.B. http://www.quirksmode.org/js/events_properties.html).
So long,
Mr. Horse
Hallo,
Hallo,
ich habe mir eine Funktion geschrieben welches den onkeypress-Event eines Eingabefelds behandelt. Um herauszufinden, von welchem Element der Event ausgelöst wurde, bin ich wie folgt vorgegangen
<input ... onkeypress="kPress(this);">
Du kannst beide Objekte übergeben:
onkeypress="kPress(this, event)"
function kPress (auslösendesElement, Eventobjekt) {
...
}
Evenobjekt.target bzw. Evenobjekt.srcElement brauchst du in dem Fall nicht, du hast ja schon die Referenz zum Element. Man braucht diese Eigenschaften aber, wenn der Event-Handler nachträglich mit JavaScript hinzugefügt wurde:
function kPress (Eventobjekt) {
Eventobjekt = Eventobjekt || window.event;
var auslösendesElement = e.target || e.srcElement;
...
}
document.getElementById("id").onkeypress = kPress; // oder ähnlich
Mathias
Evenobjekt.target bzw. Evenobjekt.srcElement brauchst du in dem Fall nicht, du hast ja schon die Referenz zum Element. Man braucht diese Eigenschaften aber, wenn der Event-Handler nachträglich mit JavaScript hinzugefügt wurde:
function kPress (Eventobjekt) {
In dem Fall ist this auch das den Event auslösende Element.
Eventobjekt = Eventobjekt || window.event;
var auslösendesElement = e.target || e.srcElement;
Das braucht man, um rauszufinden ob der Event auf einem Element im auszulösenden Element stattfindet.
Struppi.