我通过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.
}
任何想法?
答案 0 :(得分: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);
}