简体   繁体   English

动态加载javascript文件

[英]Dynamically load javascript files

var _scriptUrl = [
    'vendor/jquery/jquery-1.9.1.min.js',
    'vendor/angular/angular.js',
    'vendor/angular/angular-cookies.js',
    'vendor/bootstrap/js/bootstrap.min.js',
    'vendor/bootstrap/js/bootstrap-datepicker.js'
]

var jsElm = document.createElement("script");
jsElm.type = "application/javascript";

for(var i = 0; i < _scriptUrl.length; i++)
{
    jsElm.src = _scriptUrl[i];
    document.body.appendChild(jsElm);
}

But it is always appending last one only, please suggest. 但它总是附加最后一个,请建议。

Try appending the child in the loop. 尝试将子项附加到循环中。 In your example, you only have one instance of script. 在您的示例中,您只有一个脚本实例。

for(var i = 0; i<_scriptUrl.length; i++)
{
    var jsElm = document.createElement("script");
    jsElm.type = "application/javascript";
    jsElm.src = _scriptUrl[i];
    document.body.appendChild(jsElm);
}

If you're serious about async loading of js, try requirejs . 如果您认真对待js的异步加载,请尝试requirejs

You're declaring the jsElm outside of your for loop, therefore referencing the same element on each iteration. 您在for循环之外声明了jsElm ,因此在每次迭代时引用相同的元素。 Move this declaration inside your for loop: 在for循环中移动此声明:

var _scriptUrl = [
    'vendor/jquery/jquery-1.9.1.min.js',
    'vendor/angular/angular.js',
    'vendor/angular/angular-cookies.js',
    'vendor/bootstrap/js/bootstrap.min.js',
    'vendor/bootstrap/js/bootstrap-datepicker.js'
]

for (var i = 0; i < _scriptUrl.length; i++) {
    var jsElm = document.createElement("script");
    jsElm.type = "application/javascript";
    jsElm.src = _scriptUrl[i];
    document.body.appendChild(jsElm);
}

You are creating a single <script> and then changing its src rapidly so that only the last one has enough time to load. 您正在创建一个<script> ,然后快速更改其src ,以便只有最后一个有足够的时间加载。

Create the script element inside the loop. 在循环创建脚本元素。

You are always update the jsElm.src . 您始终更新jsElm.src

for(var i= 0;i<_scriptUrl.length;i++)
{
    var jsElm = document.createElement("script");
    jsElm.type = "application/javascript";
    jsElm.src = _scriptUrl[i];
    document.body.appendChild(jsElm);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM