2016-03-18 7 views
0

私はあるクラスのすべての要素を集め、その要素に何かを挿入するループを持っています。すぐに呼び出された関数にループ内でコールバックを書き込むにはどうすればよいですか?

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); 
    })(); 
} 

私は私はそれを呼び出す場合でも、それはnodeのIDを使用していますが、私はそのコードを実行したときに、それが唯一の配列の最後の要素で実行されますので、私はこれにコールバックを行うために必要ないくつかのコードを持っていますforループ。基本的に私が必要とするのは、ノード変数の値を保持し、ループを通過するコールバック関数で使用することです。

JavaScriptが正しく理解されている場合は、コールバックが必要ですが、直ちに呼び出される関数の記述方法はわかりません。

+1

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

+1

Teemu、これはまさに私が必要なものです。質問を語るもっと良い方法です。 – BrandenB171

答えて

1

私はあなたが望むものを正確に理解していなかったが、あなたは値を保持したい場合は、クロージャによる関数に渡す必要があります。

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); 
} 

を、私はそれはあなたが必要なものであると思います。

+0

私は実際にノードの価値を維持する必要がありますが、これは実際には十分な例であると思います – BrandenB171

関連する問題