2009-08-12 6 views
0

Disons que j'ai une fonction qui est passée une chaîne qui provient originellement de getElementById, et j'ai un objet avec le même nom que la valeur de cette chaîne, est-il possible d'appeler cet objet? Je ne saurai pas quel objet je veux jusqu'à ce que j'obtienne cette valeur de l'ID de l'élément.Est-il possible d'utiliser une variable pour appeler un objet dont le nom est identique à la valeur de la variable?

Par exemple:

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 évidemment ne fonctionnera pas car ElementID est juste une variable, pas un objet ...

+0

somevariable = document.getElementById (document.getElementById (SomeID)) ?? –

Répondre

1

Vous pouvez passer l'élément directement à someFunction.

Par exemple:

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 
} 

Ou si vous devez être en mesure d'obtenir un élément d'un id il suffit d'utiliser getElementById

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

SomeID n'est pas global ... –

+0

cela ne devrait pas poser de problème – Karl

1

Ce que vous appelez ElementID est en fait l'élément lui-même parce que vous passent document.getElementById() dans une certaine fonction.

+0

Je crois en ma fonction, je passe actuellement getElementById (SomeID) .id Je vais éditer. –

+0

Si vous connaissez déjà l'ID pourquoi l'obtenez-vous à nouveau? document.getElementById (someID) .id est équivalent à unID. –

+0

Ceci est une version simplifiée de ce que je suis en train de faire et ... eh bien, je suis très vert. J'ai utilisé des alertes pour m'assurer que mon code fonctionne et alerte (SomeID) alertes "[HTML div element]" ou quelque chose comme ça, alors j'ai opté pour la sécurité. Si cela est une préoccupation inutile, cela rendra mon code beaucoup plus facile à gérer ... –

1

si la fonction est portée globale que vous pouvez simplement window[ElementID] par exemple:

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

    } 
1

Ne fais pas ça. C'est une mauvaise conception et cela entraînera d'énormes douleurs et des insectes difficiles à trouver sur la route. À la place, utilisez un objet global contenant tous les objets que vous voulez référencer.

var valueMap = new Object(); 

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

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

Il existe déjà un objet global, appelé window. Mais je suis d'accord que l'utilisation de cela est un peu hacky. –

1

Cela n'a pas de sens:

someVariable = document.getElementById(SomeID).id 

Vous récupérez l'identifiant de l'élément avec id SomeID ... pourquoi ne pas utiliser SomeID?

Si vous voulez que l'attribut de valeur de l'objet avec id SomeID, il suffit de faire:

document.getElementById(SomeID).value 
+0

Ou simplement passer directement une référence à l'élément: StartingFunction (SomeID) { element = document.getElementById (SomeID) somefuntion (élément)} someFunction (élément) {var x = element.value} – Karl

+0

I anwered ci-dessus. C'est surtout que je suis nouveau à ce sujet et que je m'inquiète trop de mes alertes() que j'utilise pour m'assurer que les choses se passent comme prévu. alert (ElementId) me renvoyant "[HTML Div Element]" ou quoi que ce soit m'a fait craindre que le code ne fonctionnerait pas à moins que je l'ai eu pour alerter la chaîne que je le voulais. Est-ce incorrect? –

+0

"Ou simplement passer une référence à l'élément directement: StartingFunction (SomeID) {élément = document.getElementById (SomeID) somefuntion (élément)} someFunction (élément) {var x = élément.Valeur} - Karl 12 mins ago" Donc vous dites un élément méchant qui alerte "[HTML Div Element]" avec un ID de "ID" ou quoi que ce soit est le même que var ID = new Object()? Et cette valeur element.value est la même que ID.value? Si c'est le cas ... ce serait vraiment cool et ça rendrait les choses beaucoup plus faciles, mais ça semblait bien d'être vrai. –

Questions connexes