0

假设我有一个函数正在传递一个最初来自 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 只是一个变量,而不是一个对象......

4

5 回答 5

1

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

于 2009-08-12T14:36:27.617 回答
1

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

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

    }
于 2009-08-12T14:37:45.290 回答
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
}
于 2009-08-12T14:40:53.007 回答
1

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

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

var valueMap = new Object();

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

function someFunction(id) {
    return valueMap[id].Value;
}
于 2009-08-12T14:41:21.133 回答
1

这没有任何意义:

someVariable = document.getElementById(SomeID).id

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

如果您想要 ID 为 SomeID 的对象的 value 属性,只需执行以下操作:

document.getElementById(SomeID).value
于 2009-08-12T14:42:16.983 回答