2009-10-08 57 views
0

我想知道是否可以在提示框中输入一个变量的值,让它在原始变量的警报中返回给我。JS:在提示框中输入一个TRUE值并让它提醒其变量

说:var myGoal = "answer";如果我输入“answer”变成了提示,将一个好方法是什么照顾我的“answer”值,搜索,并让它在警报返回myGoal

+0

警报会说“答案”,因为这就是被分配到myGoal,当你找到它。我想不出有什么理由要这样做,你能指定你的用例吗? – 2009-10-08 03:37:53

+0

请注意'window.prompt':它在很多常见的IE 7设置中都不起作用(取决于安全设置) – 2009-10-08 09:33:15

回答

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

嘿,关闭。我说它很差。我的意思是,有一种方法可以正确地输入提示符中的内容,然后搜索该值(字符串/数字)并返回其变量。 说:var myGoal =“answer”; 如果我在提示中输入“答案”,那么采用“答案”的搜索值并让它返回警报中的myGoal的好方法是什么? – Francis 2009-10-08 03:23:25

0

通过使用eval函数来实现您所希望的唯一方法。 Eval也被称为“邪恶”功能。它会给您的代码带来巨大的安全漏洞,而且效率极低。不要使用eval。

问题是分配给变量的值总是字符串,数字,布尔值,未定义,数组,函数或对象字面值。您不能将变量名称分配给另一个变量作为值,因为当一个变量分配给另一个变量时,变量的内容就是实际分配的内容。

您将不得不重新设计您正在尝试写入的测试,以明确测试提供的值,而不是将字符串转换为变量名称。尽管一切都在全局对象(窗口),并且就会立刻发出警告,当它找到一个等于你正在寻找的价值

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

这基本上迭代:

2

像这样的事情会做的伎俩。

1

如果你愿意改变你稍微方法:

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

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

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