Falls das ganze dynamisch sein soll also mach_2() und "das was bei text1 gemacht wird, was immer das ist" musst Du natuerlich feststellen, was bei text1 so gemacht wird.
Das hier hab ich mal gebastelt. Kannst ja mal mit rumspielen:
Das ist mit Verlaub der schlechteste Weg. In JavaScript ist es so gut wie nie nötig, Code als String zu notieren. Und weder ratsam noch nötig, Funktionskörper in Strings umzuwandeln. Manche Engines können das gar nicht, der Standard erfordert es nicht. Techniken wie eval() und new Function() sind aus verschiedenen Gründen zu vermeiden - und sie können auch so gut wie immer durch eine performantere Lösung ersetzt werden.
JavaScript ist eine funktionale Sprache, und wenn man eine Funktion erweitern will, dann erzeugt man eine neue Funktion, die die alte aufruft und davor oder danach noch weiteres tut. Einfach gehalten:
function callAfter(first, second) {
return function () {
first.apply(this, arguments);
second.apply(this, arguments);
}
}
element.onblur = callAfter(element.onblur, function () {
alert('ergänzung');
});
Der Schlüssel hierzu sind Closures.
http://molily.de/js/organisation-verfuegbarkeit.html#closures
http://molily.de/javascript-core/#closures
Dasselbe Schema wird im Falle von Binding und Currying bzw. Partial Function Application angewendet.
Mathias