2009-10-08 27 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); 
    } 
}