Ibe*_*dia 1 javascript variables
如何引用变量的名称(字面意思是变量的名称)?
我有以下代码:
var thisVariableName = 'path/filename.js';
var script = document.createElement('script');
script.id = **I WANT THE TEXT "thisVariableName" to be added HERE**
script.type = 'text/javascript';
script.src = thisVariableName;
Run Code Online (Sandbox Code Playgroud)
因此,如果输出script.id,我会得到thisVariableName,而不是变量的值
在一些反应之后:
我想系统化添加许多脚本文件.在下面的示例中,我添加了四个文件,但想象一下我必须添加30多个文件(请保留自己,不要问为什么我需要添加30多个文件;毕竟这是计算的承诺)
截至目前,我知道如何完成这一任务的唯一方法是创建两个单独的数组; 数组1表示文件的名称字符串,数组2表示文件的路径,或者ALTERNATIVELLY,因为Felix Kling SUGGESTS为每个变量创建一个对象:
var jQueryPath = 'js/jquery-1.5.1.js';
var jQueryUICore = 'js/jquery.ui.core.js';
var jQueryUIWidget = 'js/jquery.ui.widget.js';
var jQueryUITabs = 'js/jquery.ui.tabs.js';
var fileNames = new Array ('jQueryPath','jQueryUICore','jQueryUIWidget','jQueryUITabs');
var filePaths = new Array (jQueryPath,jQueryUICore,jQueryUIWidget,jQueryUITabs);
var head = document.getElementsByTagName("head")[0];
for (var i=0;i<4;i++){
var script = document.createElement('script');
script.setAttribute('id',fileNames[i]);
script.setAttribute('type','text/javascript');
script.setAttribute('src', filePaths[i]);
head.appendChild(script);
}
Run Code Online (Sandbox Code Playgroud)
因此,无论是创建数组来保存变量的名称和值,还是创建对象,都需要为每个文件单独创建两个属性.
我希望我可以引用由变量组成的数组的文字变量名称; 即:
var onlyOneArray = new Array (jQueryPath,jQueryUICore,jQueryUIWidget,jQueryUITabs);
for (var i=0;i<4;i++){
var script = document.createElement('script');
script.setAttribute('id',**onlyOneArra[i] the NAME**);
script.setAttribute('type','text/javascript');
script.setAttribute('src', onlyOneArray[i]);
head.appendChild(script);
}
Run Code Online (Sandbox Code Playgroud)
您无法在运行时获取变量的名称.
我建议采用更有条理的方法,例如将变量存储为对象的属性.然后,您可以遍历此对象:
var scripts = {
thisVariableName: 'path/filename.js'
};
for(var name in scripts) {
if(scripts.hasOwnProperty(name)) {
var script = document.createElement('script');
script.id = name;
script.type = 'text/javascript';
script.src = scripts[name];
//....
}
}
Run Code Online (Sandbox Code Playgroud)
更新:关于您的更改,您最终应该做的是:
var scripts = {
jQueryPath: 'js/jquery-1.5.1.js',
jQueryUICore: 'js/jquery.ui.core.js',
jQueryUIWidget: 'js/jquery.ui.widget.js',
jQueryUITabs: 'js/jquery.ui.tabs.js'
};
var head = document.getElementsByTagName("head")[0];
for(var name in scripts) {
if(scripts.hasOwnProperty(name)) {
var script = document.createElement('script');
script.setAttribute('id', name);
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', scripts[name]);
head.appendChild(script);
}
}
Run Code Online (Sandbox Code Playgroud)