molily: attachEvent, die Function und ein Redirect

Beitrag lesen

document.getElementById(layername).attachEvent ('onmousedown', functx('name_des_div'));

eine Variable an functx übermitteln, noch kann ich direkt in functx mit "this" arbeiten...

Ja, siehe http://www.quirksmode.org/js/events_advanced.html.

Wenn du eine der verbreiteten addEvent-Helferfunktionen verwendest, hast du das Problem nicht, weil die die Handlerfunktion im Kontext des Elements ausführen, sodass »this« verwendet werden kann.

Das würde ich dir empfehlen, ansonsten kannst du mit einer Closure arbeiten, die den Layernamen einschließt:

var layername = "foo";
document.getElementById(layername).attachEvent('onmousedown', function () {
  functx(layername);
});

Das kann in Schleifen aber zu Problemen führen - entsprechende Lösungen findest du im Forumsarchiv unter den Stichwörtern Closure und Schleife(n).

Eine andere Möglichkeit wäre die Nutzung einer bind-Funktion. Die macht im Grunde dasselbe, nämlich eine Closure anlegen, jedoch die übergebene Funktion im Kontext des Elements ausführen, sodass this wieder stimmt.
http://aktuell.de.selfhtml.org/artikel/javascript/organisation/#alternativen-kontext
Genau das macht addEvent auch.

Wegen all diesen Schwierigkeiten arbeitet man eigentlich nie direkt auf der untersten Ebene mit attachEvent, sondern verwendet Helferfunktionen, die die Browserunterschiede und -unzulänglichkeiten nivellieren.

Mathias