是否有可能使用一个变量来调用对象是谁的名字是一样的变量值?
-
13-09-2019 - |
题
让我们说我有这被传递最初来自的getElementById字符串的函数,我有一个对象具有相同的名称作为字符串的值,是有没有办法来调用该对象?我不知道哪一个对象我想,直到我从元素的ID该值。
有关实例:
StartingFunction(SomeID){
someVariable = document.getElementById(SomeID).id
somefuntion(someVariable)
}
someFunction(ElementID){
// need to call Object.Value of whichever object is named the same as the value of
//ElementID here
}
ElementID.Value显然不会工作,因为ElementID仅仅是一个变量,而不是一个对象...
解决方案
可以直接传递元件someFunction。
例如:
StartingFunction(SomeID){
var element = document.getElementById(SomeID);
somefuntion(element);
}
someFunction(element){
alert(element.id);
alert(element.value);
// Any other processing you want to do with element
}
或者,如果你需要能够从一个id获取元素只是使用getElementById
someFunction(id) {
var element = document.getElementById(id);
alert(element.value);
// Any other processing you need to do with the element DOM object
}
其他提示
你叫什么ElementID实际上是元素本身,因为你逝去的document.getElementById()到somefunction。
如果函数是在全球范围内,你可以只window[ElementID]
例如:
someFunction(ElementID){
return window[ElementID].value;
}
不要那样做。这是糟糕的设计,并会导致巨大的痛苦和难以发现的错误的道路。
相反,使用具有所有对象要引用一个全局对象。
var valueMap = new Object();
function setValue(id, valueObject) {
valueMap[id] = valueObject;
}
function someFunction(id) {
return valueMap[id].Value;
}
这是没有意义:
someVariable = document.getElementById(SomeID).id
您获取元素的ID与ID SomeID ......为什么不使用SomeID?
如果你想与ID SomeID对象的价值属性,只是做:
document.getElementById(SomeID).value
不隶属于 StackOverflow