(DOM)Objekt welches eine Funktion aufruft
Andreas
- javascript
0 Mathias Brodala0 dicon0 Andreas
Hallo ich habe ein kleines Problem,
ich möchte gern auf ein (DOM)Objekt zugreifen von dem eine Funktion über ein Event aufgerufen wurde also z.B. auf den Button wenn dieser Button ein clickEvent hat z.B sowas wie
<input type="button" onclick="eineFunktion();">
in plainHtml ft. Javascript könnte man eine Lösunge wie diese nutzen
<input type="button" onclick="eineFunktion(this);">
und dann in der Fuktion auf diesen Parameter zugreifen.
Leider will ich nun das ganze aber in einer Domstruktur realisieren und da macht mir der IE mal wieder Striche durch meine Rechnung. Ich nutze die Funktion attachEvent um im IE mein gewünschtes Event anzufügen.
Momentan sieht meine Code für den IE etwa so aus:
event='onclick';
func = 'eineFunktion(this)';
elem.attachEvent(event,function(){eval(func)});
(ich weiss "eval is evil" aba darüber möchte ich jetz nich diskutieren :) )
gibt es eine andere Möglichkeit auf das (DOM)Objekt zuzugreifen von welchen die Funktion aufgerufen wurde?
danke im Vorraus
Hallo Andreas.
Momentan sieht meine Code für den IE etwa so aus:
event='onclick';
func = 'eineFunktion(this)';
elem.attachEvent(event,function(){eval(func)});(ich weiss "eval is evil" aba darüber möchte ich jetz nich diskutieren :) )
gibt es eine andere Möglichkeit auf das (DOM)Objekt zuzugreifen von welchen die Funktion aufgerufen wurde?
Einfach so?
elem.onclick = function(e) {
var e = e || window.event; // IE-Workaround
alert(this); // Das Elementobjekt „elem“
}
Einen schönen Mittwoch noch.
Gruß, Mathias
Hi Mathias,
leider kann ich diese Lösung nicht verwenden da in meinen BSP event und func nur als String vorliegen.
mfg Andreas
PS. Schöne grüße nach Dresden :)
Hallo Andreas.
leider kann ich diese Lösung nicht verwenden da in meinen BSP event und func nur als String vorliegen.
Dann eben so:
var event = 'onclick';
var func = 'var e = e || window.event; alert(this);';
elem[event] = new Function('e', func);
PS. Schöne grüße nach Dresden :)
Dankeschön.
Einen schönen Mittwoch noch.
Gruß, Mathias
Stop! In func steht nicht die Funktion sondern nur der Funktionsname!
gruß Andreas
hi,
Stop!
Mit wie vielen weiteren Postings von dir, in denen du erst nach und nach relevante Informationen rausrückst, dürfen wir denn noch rechnen?
Du scheinst entweder Hobby-Quizmaster zu sein - oder selbst schon keinen Überblick mehr zu haben.
In func steht nicht die Funktion sondern nur der Funktionsname!
var Funktionsname = "alert";
windowFunktionsname;
gruß,
wahsaga
Hey moment was soll das? Lies dir meinen ersten post bitte erst richitg durch bevor du solche Urteile fällst!
Hallo Andreas,
wenn ich Dich richtig verstanden habe, möchtest Du das Objekt haben, welches den
Event ausgelöst hat?! Wenn nicht, hab ich Pech gehabt. Ansonsten liefert Dir
die Funktion
function getEventTarget(e) {
return (e.target) ? e.target : e.srcElement;
}
das Element, welches den Event auslöst. e verwendet Du auch als Parameter
in deiner Funktion:
machWas = function(e) {
var elem = getEventTarget(e); //liefert das event-auslösende Element
if (!elem) {
// mach was, wenn element nicht vorhanden
} else {
// mach was anderes, wenn Element vorhanden
}
}
Passt?
Grüße, dicon
Hey cool genau das hab ich gesucht :)
Vielen danke und noch einen schönen Tag