我经常使用这样的函数:
function elem(name){
return document.getElementById(name);
}
使用方法如下:
var box = elem('box');
通常,我创建的变量的名称与传递给elem
函数的字符串相同。
如何创建一个返回与变量名具有相同id的元素的函数?
答案 0 :(得分:3)
简短的回答是你无法做到。该函数无法知道变量名称是什么。
你最接近的将是使用一个可怕的,可怕的黑客并创建一个全局:
function box (element_id) {
window[element_id] = document.getElementById(element_id);
}
box('foo');
...但即使这样做与你所要求的相反(从字符串而不是相反的方式创建变量名)。
答案 1 :(得分:1)
.html
现在,function elem(name){
window[name]=document.getElementById(name);
}
将创建您可以使用的全局变量elem('box');
。
示例代码
box = document.getElementById('box');
答案 2 :(得分:0)
更好地创建像
这样的命名空间var ns = {};
['box', 'box2'].forEach(function (el) { ns[el] = document.getElementById(el); });
使用
进行访问ns.box.innerHtml = 'foo';
答案 3 :(得分:0)
您始终可以使用可用的DOM方法,而无需从元素ID生成变量。 例如,而不是使用
obj.Questions
你可以直接使用:
var elem = document.getElementById("box");
elem.innerHTML = "Test";
但是如果出于其他原因你真的需要同名的变量,我认为可以这样做是使用box.innerHTML = "Test";
函数:
eval()