让我们说我有这被传递最初来自的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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top