是否可以使用变量来调用名称与变量值相同的对象?

时间:2009-08-12 14:30:00

标签: javascript javascript-objects

假设我有一个函数正在传递一个最初来自getElementById的字符串,并且我有一个与该字符串值相同的对象,有没有办法调用该对象?在从元素的ID中获取该值之前,我不知道我想要哪个对象。

For Instance:

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只是一个变量,而不是一个对象......

5 个答案:

答案 0 :(得分:1)

你所谓的ElementID实际上是元素本身,因为你将document.getElementById()传递给某个函数。

答案 1 :(得分:1)

如果函数在全局范围内,您只需window[ElementID] 例如:

   someFunction(ElementID){
        return window[ElementID].value;

    }

答案 2 :(得分:1)

您可以将元素直接传递给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
}

答案 3 :(得分:1)

不要那样做。这是糟糕的设计,将导致巨大的痛苦和难以发现的错误。

相反,请使用包含要引用的所有对象的全局对象。

var valueMap = new Object();

function setValue(id, valueObject) {
    valueMap[id] = valueObject;
}

function someFunction(id) {
    return valueMap[id].Value;
}

答案 4 :(得分:1)

这没有任何意义:

someVariable = document.getElementById(SomeID).id

您正在获取ID为SomeID的元素的ID ...为什么不使用SomeID?

如果你想要id为SomeID的对象的value属性,只需执行:

document.getElementById(SomeID).value