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.
Phil Cooper
3,1231 gold badge43 silver badges63 bronze badges
asked Nov 11, 2015 at 13:36
Prashobh
9,58415 gold badges66 silver badges92 bronze badges
4 Answers 4
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.
answered Nov 11, 2015 at 13:39
Phil Cooper
3,1231 gold badge43 silver badges63 bronze badges
Sign up to request clarification or add additional context in comments.
Comments
You're declaring the jsElm outside of your for loop, therefore referencing the same element on each iteration. Move this declaration inside your for loop:
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);
}
answered Nov 11, 2015 at 13:39
CodingIntrigue
79k32 gold badges176 silver badges178 bronze badges
Comments
You are creating a single <script> and then changing its src rapidly so that only the last one has enough time to load.
Create the script element inside the loop.
answered Nov 11, 2015 at 13:39
Quentin
949k137 gold badges1.3k silver badges1.4k bronze badges
Comments
You are always update the 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);
}
Comments
lang-js