2009-10-08 4 views
0

Je me demande s'il est possible d'entrer une valeur d'une variable dans une boîte rapide faites-moi revenir dans une alerte de sa variable d'origine.JS: Saisie d'une valeur TRUE dans une boîte rapide et ayant elle alerte sa variable

Dis: var myGoal = "answer"; Si j'entre « answer » dans une invite, ce serait une bonne méthode est de prendre ma valeur de « answer », la recherche et l'avoir de retour myGoal dans une alerte?

+0

L'alerte dira « réponse » puisque c'est ce qui est attribué à myGoal, quand vous le trouvez. Je ne vois aucune raison de le faire, pouvez-vous préciser votre cas d'utilisation? Méfiez-vous des –

+0

'window.prompt': il ne fonctionne pas dans de nombreux set-ups communs IE 7 (en fonction des paramètres de sécurité) –

Répondre

0
function test() 
{ 
    var answer = prompt("Hello? What is your name?",''); 
    alert(answer); 
} 
+0

Heh, à proximité. Je l'ai plutôt mal exprimé. Je veux dire est-il une méthode de prendre exactement ce que je tape dans l'invite, la recherche de cette valeur (chaîne/nombre) et le retour de sa variable. Dis: var = myGoal "réponse"; Si je rentre « réponse » dans une invite, ce serait une bonne méthode est de prendre ma valeur de la recherche de « réponse » et de l'avoir de retour myGoal dans une alerte? – Francis

0

La seule façon d'obtenir ce que vous souhaitez est d'utiliser la fonction eval. Eval est également connu comme la fonction "maléfique". Il peut introduire des failles de sécurité massives dans votre code et est extrêmement inefficace. N'utilisez pas eval.

Le problème est qu'une valeur attribuée à une variable sera toujours une chaîne, nombre, booléen, non défini, tableau, fonction ou littéral d'objet. Vous ne pouvez pas affecter un nom de variable à une autre variable en tant que valeur, car lorsqu'une variable est affectée à une autre, le contenu de la variable correspond à ce qui est réellement affecté.

Vous allez devoir redessiner le test que vous essayez d'écrire pour tester contre la valeur fournie explicitement au lieu de convertir une chaîne en un nom de variable.

2

Quelque chose comme ça ferait l'affaire:

function test(val) 
{ 
    for (var i in window) 
    { 
     if (window.hasOwnProperty(i) && window[i] === val) 
     { 
      alert(i); 
     } 
    } 
} 

Ce essentiellement itère si tout dans l'objet global (fenêtre), et les incendies déclencher une alerte quand il en trouve un qui est égal à la valeur que vous cherchez .

1

Si vous êtes prêt à changer votre approche légèrement:

var Data = new Object(); 
Data["myGoal"] = "answer"; 
// ... 

// Get response from prompt... 
var response = /* ... */; 

for (var key in Data) 
{ 
    if (Data[key] == response) 
    { 
     alert(key); 
    } 
} 
Questions connexes