for (i = 0; i < allMyElements.length; i++) {
(function () {
var element = allMyElements[i];
element.onappend = function () {
onappend.apply(element, arguments);
};
})();
}
Das ist zwar ein schönes Theorie-Beispiel zum Thema Closures & Schleifen, aber so würde man das in der Praxis natürlich nicht machen - selbst wenn das Binding nötig ist, weil die Gefahr besteht, dass die Funktion irgendwann nicht über element.onappend() aufgerufen wird.
Dann lagert man diese absurd komplizierte doppelte Closure-Erzeugung aus in eine allgemeine bind-Methode. Die gehört mit dem kommenden ECMAScript 5 übrigens zum Standardumfang von JavaScript.
for (... allMyElements ...) {
element.onappend = onappend.bind(allMyElements[i]);
}
Mathias