E 'possibile utilizzare una variabile per chiamare un oggetto il cui nome è lo stesso del valore di variabili?
-
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 ...
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