Ist es möglich, eine Variable zu verwenden, ein Objekt zu nennen, dessen Name ist der gleiche wie der Variablen Wert?

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

  •  13-09-2019
  •  | 
  •  

Frage

Lassen Sie uns sagen, ich habe eine Funktion, die einen String übergeben wird, die ursprünglich aus getElementByld kam, und ich habe ein Objekt mit dem gleichen Namen wie die Zeichenfolge den Wert, ist es eine Möglichkeit, das Objekt zu nennen? Ich will nicht wissen, welches Objekt Ich möchte, bis ich diesen Wert aus dem Elemente der ID erhalten.

Zum Beispiel:

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 wird natürlich nicht funktionieren, da ElementID nur eine Variable, kein Objekt ...

War es hilfreich?

Lösung

Sie können das Element direkt an somefunction passieren.

Zum Beispiel:

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
}

oder wenn Sie ein Element aus einer ID zu bekommen, um der Lage sein, nur getElementById verwenden

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

Andere Tipps

Was Sie ElementID nennen, ist eigentlich das Element selbst, weil Sie vorbei document.getElementById () in Einefunktion.

, wenn die Funktion in globalem Bereich ist, können Sie nur window[ElementID] zum Beispiel:

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

    }

Tu das nicht. Dies ist schlechtes Design und wird zu enormen Schmerzen und schwer zu findende Fehler auf der Straße führen.

Verwenden Sie stattdessen ein globales Objekt, das verweisen alle Objekte, die Sie wollen hat.

var valueMap = new Object();

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

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

Das macht keinen Sinn:

someVariable = document.getElementById(SomeID).id

Sie sind die ID des Elements mit id holen SomeID ... warum nicht nur SomeID verwenden?

Wenn Sie den Wert Attribut des Objekts mit der ID SomeID wollen, gerade tun:

document.getElementById(SomeID).value
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top