E 'possibile utilizzare una variabile per chiamare un oggetto il cui nome è lo stesso del valore di variabili?

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

  •  13-09-2019
  •  | 
  •  

Domanda

Diciamo che avere una funzione che viene passata una stringa originaria di getElementById, e ho un oggetto con lo stesso nome di valore di stringa, c'è un modo per chiamare tale oggetto? Io non so quale oggetto voglio fino a ottenere quel valore dal ID dell'elemento.

Per esempio:

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, ovviamente, non funziona in quanto elementID è solo una variabile, non un oggetto ...

È stato utile?

Soluzione

È possibile passare l'elemento direttamente a someFunction.

Ad esempio:

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
}

Se avete bisogno di essere in grado di ottenere un elemento da un id basta usare getElementById

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

Altri suggerimenti

Quello che tu chiami elementID è in realtà l'elemento stesso, perché si sta passando document.getElementById () in someFunction.

se la funzione è di portata globale si può solo window[ElementID] per esempio:

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

    }

Non farlo. Questa è una cattiva progettazione e porterà ad un enorme dolore e bug difficili da trovare lungo la strada.

Al contrario, utilizzare un oggetto globale che ha tutti gli oggetti che si desidera fare riferimento.

var valueMap = new Object();

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

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

Questo non ha senso:

someVariable = document.getElementById(SomeID).id

state cercando di caricare l'id dell'elemento con id QualcheID ... perché non utilizzare QualcheID?

Se si desidera che l'attributo valore dell'oggetto con id QualcheID, basta fare:

document.getElementById(SomeID).value
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top