hi,
Ich bin völlig frustriert, da ich nicht mal ansatzweise erkenne, wo ich was wie drehen muss, damit "this.id" auch wirklich die ID des Links übergibt.
Wieso funktioniert:
this.id = 'gnn'; alert(this.id);
aber das hier nicht:
alertTest('Diese ID: ' + this.id);
???
Wenn du den Aufruf wirklich im onclick-Attribut im HTML notiert hast - dann wir die Funktion im Kontext des Elements ausgeführt.
Dieser Kontext geht dir aber verloren, wenn du hier
// Hat dieses Element bereits eine onclick-Funktion?
// dann schreibe sie in das Array:
if(objHandlerElement[i].onclick){
arrOnClickEvents[i] = objHandlerElement[i].onclick;
die Funktionen alle in dein Array legst.
// Das lang-Attribut zu setzen ist ein Workaround, damit der Link weiss,
// welcher Array-Index der richtige ist:
objHandlerElement[i].lang = i;
Pfui bah. Warum dazu das lang-Attribut missbrauchen?
Du kannst auch problemlos eigene Eigenschaften an Javascript-Objekte anhängen, bspw. objHandlerElement[i].arrOnClickEventsIndex = i;
// Hier wird nun eine neue Funktion an das onClick-Event gebunden:
objHandlerElement[i].onclick = function() {
if(arrOnClickEvents[this.lang])
{
// eine bereits vorhandene onclick-Funktion wird aus dem Array geholt und ausgefuhert:
arrOnClickEventsthis.lang;
call bzw. apply könnten dir hier helfen, die Funktion auch wirklich im Kontext des ursprünglichen Elementes/Objektes auszuführen.
Btw: Diverse Ansätze für sowas sind bereits entwickelt worden, bspw. http://ejohn.org/projects/flexible-javascript-events/
gruß,
wahsaga
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }