我想知道是否可以在变量框中输入变量值,让它在原始变量的警报中返回给我。
说:var myGoal = "answer";
如果我在提示符中输入“answer
”,那么获取“answer
”值,搜索并返回{的好方法是什么? {1}}在警报中?
答案 0 :(得分:2)
这样的事情可以解决问题:
function test(val)
{
for (var i in window)
{
if (window.hasOwnProperty(i) && window[i] === val)
{
alert(i);
}
}
}
这基本上迭代了全局对象(窗口)中的所有内容,并在找到一个等于您正在寻找的值时触发警报。
答案 1 :(得分: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);
}
}
答案 2 :(得分:0)
function test()
{
var answer = prompt("Hello? What is your name?",'');
alert(answer);
}
答案 3 :(得分:0)
实现您所希望的唯一方法是使用eval函数。 Eval也被称为“邪恶”功能。它可能会给代码带来大量安全漏洞,而且效率极低。不要使用eval。
问题是分配给变量的值将始终是字符串,数字,布尔值,未定义,数组,函数或对象字面值。您不能将变量名称作为值分配给另一个变量,因为当一个变量分配给另一个变量时,变量的内容就是实际分配的内容。
您将不得不重新设计您尝试编写的测试,以显式测试提供的值,而不是将字符串转换为变量名。