newRow.onclick= new Function('xyz','this.bgColor="#D9D9F0"');
- Es wird eine neue Funktion bei jeder reihe geschrieben, diese heisst dann auch immer xyz. Mehrere Funktionen alle gleichen Namen?
Nur zur Info: Da verstehst du etwas falsch. new Function erzeugt einfach ein Funktionsobjekt ohne "Namen", es gibt die Funktion einfach zurück und erst dann speichert man sie irgendwo unter einem Namen.
Das "xyz" im obigen Beispiel hat eine ganz andere Bedeutung. Es ist ein Parameter, den die Funktion entgegennimmt! Man verwendet new Function so:
new Function("parameter1", "parameter2", ... "parameterN", "Funktionskörper")
Aber das brauchst du wie gesagt gar nicht und der Parameter xyz ist in dem Fall ohnehin unnötig. (Die Handlerfunktion bekommt das Event-Objekt als ersten und einzigen Parameter, das verwendest du nicht, und xyz wäre ein doofer Variablenname dafür.)
- Warum überhaupt eine Funktion?
Weil so das traditionelle Event-Handling seit 1995 funktioniert.
Das DOM, also das dynamische Setzen von Attributen an HTML-Elementknoten, kam erst viel später und daher ist .onclick = "string" bzw. setAttribute("onclick", "string") nicht so breit unterstützt.
http://redaktion.selfhtml.org/selfhtml-preview/javascript/einbindung.html#fehler-code-als-string
Mathias