0

get を介してプラグインの複数のスクリプトを読み込ん$.getScriptでいます。スクリプトの最後の読み込み後にのみプラグインを開始する必要がありますが、ループが最後のスクリプトに到達したことをどのように知ることができますか?

// load multiple files.
var scripts = [
    'mode/xml/xml.js',
    'mode/css/css.js',
    'mode/javascript/javascript.js'
];

alert(scripts.length); // 3

for(var i = 0; i < scripts.length; i++) 
{
    $.getScript(http_root+'global/views/javascripts/codemirror/original/'+scripts[i], function() {

        alert(i); // this will alert number 3 for 3 times.

        if(i == scripts.length) // this means that the plugin will be initiated 3 times.
        {
            var editor = CodeMirror.fromTextArea(document.getElementById("code_content_1"), { 
                mode: "text/html", 
                theme: "eclipse",
                lineNumbers: true
            });
        }
    });

    alert(i); // this will alert the number from 0 to 2.
}

何か案は?

4

1 に答える 1

0

反復ごとに変数 i が変更されないように、呼び出しをクロージャーでラップします。

for(var i = 0; i < scripts.length; i++) 
{
  (function(i) {
      $.getScript(http_root+'global/views/javascripts/codemirror/original/'+scripts[i], function() {

      if(i + 1 == scripts.length)
      {
        var editor = CodeMirror.fromTextArea(document.getElementById("code_content_1"), { 
            mode: "text/html", 
            theme: "eclipse",
            lineNumbers: true
        });
      }
    });
  })(i);  
}
于 2011-11-23T14:23:38.420 に答える