Javascript:获取变量名称作为字符串

时间:2015-06-22 11:07:38

标签: javascript

我经常使用这样的函数:

function elem(name){
    return document.getElementById(name);
}

使用方法如下:

var box = elem('box');

通常,我创建的变量的名称与传递给elem函数的字符串相同。

如何创建一个返回与变量名具有相同id的元素的函数?

4 个答案:

答案 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()
相关问题