2016-03-18 4 views
0

Ich habe eine Schleife, um alle Elemente einer bestimmten Klasse zu sammeln und etwas in dieses Element einzufügen.Wie schreibe ich einen Callback zu einer sofort aufgerufenen Funktion in einer Schleife?

var node; 
var nodes = document.getElementsByClassName('myclass'); 
for(var i = 1; i <= nodes.length; ++i) { 
    function() { 
    var element = document.creatElement('script'); 
    node = document.getElementById('my-node' + i); 
    node.parentNode.insertBefore(element, node); 
    })(); 
} 

Ich habe einige Code, den ich einen Rückruf an, dies machen müssen, weil sie die ID von node verwendet, aber wenn ich diesen Code ausführen es läuft nur auf dem letzten Element des Arrays, auch wenn ich es in dem Aufruf für die Schleife. Grundsätzlich ist es wichtig, den Wert der Knotenvariable beizubehalten und sie bei jedem Durchlauf durch die Schleife in einer Callback-Funktion zu verwenden.

Wenn ich Javascript richtig verstehe, bedeutet dies, dass ich einen Rückruf brauche, aber ich weiß nicht, wie man einen für eine sofort aufgerufene Funktion schreibt.

+1

http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example – Teemu

+1

Teemu, das ist genau das, was ich brauchte. und eine viel bessere Art, die Frage zu formulieren! – BrandenB171

Antwort

1

Ich habe nicht genau verstehen, was Sie wollen, aber wenn Sie den Wert halten wollen, müssen Sie es an die Funktion aufgrund der Schließung weitergeben müssen:

var nodes = document.getElementsByClassName('myclass'); 
    for(i=1; i<=nodes.length; ++i){ 
    function(valueofI){ 
    var element = document.creatElement('script'); 
    node = document.getElementById('my-node'+valueofI); 
    node.parentNode.insertBefore(element, node); 
    })(i); 
} 

Ich hoffe, es ist das, was Sie brauchen.

+0

Ich muss den Wert des Knotens tatsächlich beibehalten, aber ich denke, das wird tatsächlich gut genug als Beispiel – BrandenB171

Verwandte Themen