我經常使用的功能,像這樣的:的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+ "');");
}
您是否意識到您正在重新發明具有該功能的車輪,對不對?這就是說我沒有什麼可以做你想做的事,也許你可以放下變量並使用函數調用呢? –