Das Problme ist das i in der anonymen Funktion immer den letzten Wert hat (also vorlagen.length). Ein einfacher Workaround wäre nf als Attribut i mitzugeben, also z.b. nf.i = i und in der Funktion als nf.i verwenden.
Ob das aber geht weiß ich nicht, da für nf das Problem ebenfalls auftritt.
Wie kann ich denn Variablen an die anonyme Funktion übergeben? Geht das genauso wie sonst auch? Also:
Event.observe(nf, 'load', function(p1,p2) { ...
Im Prinzip bietet aber prototype gerade für sowas vielfältige Funktionen an, aber ich hab damit noch nie gearbeitet und weiß nicht wie. Auf jeden Fall gibt es dort allein schon für Arrays (die Rückgabe von getElementsByClassName) vielfältige Funktionen.
Ich würde mir die Api von prototype mal genauer anschauen.
Daran verzweifliche ich gerade, weil mein seit über 30 Jahren durch andere (nicht OOP) Programmierung geprägtes Gehirn sich nur schwer darauf einlassen mag. Wenn ich es richtig verstehe, ist bindAsEventListener wohl der Schlüssel, aber ich kapiere es einfach nicht. Und zudem erscheint mir das dort gegebene Beispiel auch falsch zu sein.
Wobei ich mich Frage was du da vorhast, sieht ja nach einer Anwendung für AJAX aus oder was machst du mit den ganzen iframes?
Prinzipiell hast du Recht. Es geht darum, Code in die iframes zu laden und daraus einen Teil zu extrahieren, der durch ein Element mit einer eindeutigen id gekennzeichnet ist. Diese brauche ich, um den Teil zu identifizieren, auf den der Benutzer Einfluss nehmen kann. Denn drumherum ist immer eine komplette HTML-Seite, die von einem Server generiert wird. Natürlich bekomme ich die Seite auch mit AJAX geliefert, aber eben nur als Text und dann muss ich mir den interessierenden Teil selbst extrahieren. Das wäre zwar schneller, weil die komplette Verarbeitung des Browsers entfiele, aber auch fehleranfälliger, wenn der Benutzer dort invalide Konstrukte abgelegt hat.
Um nochmal auf mein fehlendes Verständnis zurückzukommen - gibt es irgendwo eine Einführung (von mir aus auch auf Englisch), die einem nicht-OOP-Programmierer die speziellen Möglichkeiten von Javascript näher bringt? Ich habe das Gefühl, dass ich immer nur an der Oberfläche kratze und mir nur das Aha-Erlebnis fehlt, um tiefer einzudringen.
Dabei geht es mir nicht um Begrifflichkeit - ich kann durchaus etwas mit Objekten, Methoden, Scope, Closures etc. anfangen. Mit der Vererbung wird es schon schwieriger. Auch die Art der Definition von Objekten mit der Doppelpunkt-Notation (var obj = {name: 'value', fx: function ...};) bereitet mir große Schwierigkeiten, wenn es um deren Auswirkungen außerhalb des jeweiligen Objektes geht.
Wo ist bloß der Kalklöser ...
Ralf