¿Es posible utilizar una variable para llamar a un objeto cuyo nombre es el mismo que el valor de las variables?

StackOverflow https://stackoverflow.com/questions/1266537

  •  13-09-2019
  •  | 
  •  

Pregunta

Digamos que tienen una función que se está pasando una cadena que vino originalmente de getElemenById, y tengo un objeto con el mismo nombre que el valor de esa cadena, hay una manera para llamar a ese objeto? No voy a saber qué objeto que quiero hasta que llegue ese valor de ID del elemento.

Por ejemplo:

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, obviamente, no va a funcionar desde ElementID es sólo una variable, no un objeto ...

¿Fue útil?

Solución

Puede pasar el elemento directamente al algunaFuncion.

Por ejemplo:

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
}

O si usted necesita para ser capaz de obtener un elemento de un id sólo tiene que utilizar getElementById

someFunction(id) {
  var element = document.getElementById(id);
  alert(element.value);
  // Any other processing you need to do with the element DOM object
}

Otros consejos

Lo que llamas ElementID es en realidad el elemento en sí, porque está de paso document.getElementById () en algunaFuncion.

si la función es en el ámbito global que sólo puede window[ElementID] por ejemplo:

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

    }

No hacer eso. Este es un mal diseño y dará lugar a un enorme dolor y errores difíciles de encontrar en el camino.

En su lugar, utilice un objeto global que cuenta con todos los objetos que desea hacer referencia.

var valueMap = new Object();

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

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

Esto no tiene sentido:

someVariable = document.getElementById(SomeID).id

esté recogiendo el id del elemento con id SomeID ... ¿por qué no usar SomeID?

Si desea que el atributo de valor del objeto con SomeID Identificación, acaba de hacer:

document.getElementById(SomeID).value
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top