Dynamisch Event einem Element zuweisen.

Hi

ich will einem Element dynamisch mehrere Funktionen bei onclick zuweisen, doch leider scheitere ich an einer fehlermeldung…

Hier die Funktion zum Adden:

[ol] [li][FONT=monospace][I]/*[/I][/FONT][/li][li][FONT=monospace][I] fügt einem bestimmten Objekt ein weiters Event hinzu[/I][/FONT][/li][li][FONT=monospace][I] @param String ObjektID Die ID des HTML-Objektes[/I][/FONT][/li][li][FONT=monospace][I] @param String Event Das Event welches erweitert werden soll (z..B: onclick)[/I][/FONT][/li][li][FONT=monospace][I] @param String FunctionName der name der Funktion welche angehangen wird (mit () am Ende)[/I][/FONT][/li][li][FONT=monospace][I]*/[/I][/FONT][/li][li][FONT=monospace][B]function[/B] add_event(ObjektID, Event, FunctionName)[/FONT][/li][li][FONT=monospace]{[/FONT][/li][li][FONT=monospace] [B]var[/B] tmpObjekt = document.getElementById(ObjektID);[/FONT][/li][li][FONT=monospace] if(tmpObjekt)[/FONT][/li][li][FONT=monospace] {[/FONT][/li][li][FONT=monospace] [B]var[/B] oldEvent = String(tmpObjekt.attributes[Event]);[/FONT][/li][li][FONT=monospace] alert(oldEvent);[/FONT][/li][li][FONT=monospace] if(oldEvent && oldEvent.length >0)[/FONT][/li][li][FONT=monospace] tmpObjekt.attributes.add(Event,oldEvent+";"+FunctionName);[/FONT][/li][li][FONT=monospace] else[/FONT][/li][li][FONT=monospace] tmpObjekt.attributes.add(Event,FunctionName);[/FONT][/li][li][FONT=monospace] }[/FONT][/li][li][FONT=monospace]}[/FONT][/li][/ol] Die fehlermeldung:

[FONT=monospace]Fehler: tmpObjekt.attributes.add is not a [B]function[/B][/FONT] wie kann ich nach dem laden der seite einem button weitere events zuweisen, so das aber die alten noch erhalten bleiben? danke :smiley:

EDIT

Hat sich erledgit, ich muss nur setAttribute und getAttribute nutzen XD

[FONT=monospace]tmpObjekt.getAttribute(Event)[/FONT]

Wer fügt denn bitte so Event hinzu? Es gibt doch addEventListener()!

ja, ich weis, das war aber wichtig für ein test! Da ich so direkt in das attribut schreiben kann!

:smiley: und es hat funktioniert :wink: mehr wollte ich garnet.

Das ist eine sehr umständlich Vorgehensweise. set/getAttribute ist hier keine sinnvollen Funktionen und „Funktionsname“ zu übergeben auch nicht. In JS arbeitest du aber an dieser Stelle mit Funktionsreferenzen.

Da geht es darum, dass a.) this auch das Objekt ist und b.) das Eventobjekt in jedem Browser zu Verfügung steht.

[PHP] /*
fügt einem bestimmten Objekt ein weiters Event hinzu
@param String ObjektID Die ID des HTML-Objektes
@param String Event Das Event welches erweitert werden soll (z…B: onclick)
@param String FunctionsReferenz callback Funktion welche angehangen wird
*/
function add_event(ObjektID, Event, FunctionRef) {
var tmpObjekt = document.getElementById(ObjektID);
if(tmpObjekt) {
var oldEvent = tmpObjekt[Event];
alert(oldEvent);
tmpObjekt[Event] = function(e) {
if(oldEvent) oldEvent(e);
FunctionRef(e);
};
}
}[/PHP]