我经常使用的功能,像这样的:的Javascript:获取变量的字符串名字
function elem(name){
return document.getElementById(name);
}
这是使用像这样:
var box = elem('box');
通常情况下,可变我的名字创建与传递给elem
函数的字符串相同。
如何创建一个返回与变量名称相同的元素的函数?
我经常使用的功能,像这样的:的Javascript:获取变量的字符串名字
function elem(name){
return document.getElementById(name);
}
这是使用像这样:
var box = elem('box');
通常情况下,可变我的名字创建与传递给elem
函数的字符串相同。
如何创建一个返回与变量名称相同的元素的函数?
function elem(name){
window[name]=document.getElementById(name);
}
现在,elem('box');
将创建全局变量box = document.getElementById('box');
,您可以使用。
示例代码
<!DOCTYPE html>
<html>
<body>
<div id="box" onclick="hi();">box</div>
<script type='text/javascript'>
function elem(name){
window[name]=document.getElementById(name);
}
function hi(){
elem('box');
box.style.border='1px solid #ccc';
}
</script>
</body>
</html>
简短的回答是,你不能。该函数无法知道变量名是什么。
你能来是使用一个可怕的,可怕的黑客并创建一个全局最接近:
function box (element_id) {
window[element_id] = document.getElementById(element_id);
}
box('foo');
......但即使不的你问什么,相反(创建变量名称来自字符串而不是其他方式)。
这很有道理。我想我会测试一下并玩一下。 – Tobsta
更好地做一个命名空间像
var ns = {};
['box', 'box2'].forEach(function (el) { ns[el] = document.getElementById(el); });
访问与
ns.box.innerHtml = 'foo';
我宁愿它不使用一个对象。它确实有道理,只是我仍然希望它作为一个独立的变量名称。 – Tobsta
您可以随时使用可用的DOM方法,而无需生成元素ID的变量。 例如,而不是使用
var elem = document.getElementById("box");
elem.innerHTML = "Test";
你可以直接使用:
box.innerHTML = "Test";
但如果你真的需要从其他原因相同名称的变量,我认为可以使用eval()
函数来完成像这样:
function box(elem){
eval("var "+ elem + " = document.getElementById('" + elem+ "');");
}
您是否意识到您正在重新发明具有该功能的车轮,对不对?这就是说我没有什么可以做你想做的事,也许你可以放下变量并使用函数调用呢? –