Da gibt es mehrere Möglichkeiten, kommt darauf an wie das ganze konkret aussieht.
Struppi.
Ok, folgende Konstellation:
ich habe ein seitenspezifisches Array folgender Art
var aEventList = new Array();
aEventList[1] = new Array();
aEventList[1][event] = "blur";
aEventList[1][elementid] = "field1";
aEventList[1][function] = "alert";
aEventList[1][param] = new Array("bin der einzige Parameter");
aEventList[2] = new Array();
aEventList[2][event] = "click";
aEventList[2][elementid] = "link5";
aEventList[2][function] = "myObject.ObjextFunktion";
aEventList[2][param] = new Array("a", "b", new Array(1, 2));
Dann brauche ich also noch eine globale Init-Function, die meine Event-Handler setzt, auf die Schnelle vielleicht so (mit prototype.js-Unterstützung):
function init(){
for(var i=0; i< aEventList.length; i++){
Event.observe($(aEventList[i][elementid]), aEventList[i][event], function(event){ observe(event, aEventList[i][function], aEventList[i][param]); }, false);
}
}
function observe(oEvent, sFunction, aParam){
// hier jetzt der schon gepostete Quelltext
}
Dem aufmerksamen Beobachter wird sicher auffallen, dass sFunction und aParam in der Funktion observe nicht richtig ankommen, wenn das unter einem Event-Kontext aufgerufen wird. Das Problem habe ich gelöst, die Funktionen init und observe befinden sich in einem Objekt und die Parameter sind als Objektvariablen gespeichert. Für das Beispiel eigentlich nicht relevant.
Die Idee dürfte klar sein. Ich möchte eine Liste mit abarbeitbaren Event-Initialisierungen haben.