2009-10-08 2 views
0

Мне интересно, можно ли ввести значение переменной в окно подсказки, чтобы оно возвращалось ко мне в уведомлении об исходной переменной.JS: Ввод ИСТИННОГО значения в поле приглашения и его предупреждение о его переменной

Скажи: var myGoal = "answer"; Если я вхожу «answer» в строке, что бы хороший способ быть с моей значение «answer», поиск, и с его вернуть myGoal в боевой готовности?

+0

Предупреждение будет сказать «ответ», так это то, что относится к myGoal, когда вы найдете его. Я не могу придумать никаких причин для этого, можете ли вы указать свой вариант использования? –

+0

Остерегайтесь 'window.prompt': он не работает во многих обычных настройках IE 7 (в зависимости от настроек безопасности) –

ответ

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

Хех, рядом. Я сформулировал это довольно плохо. Я имею в виду, что есть метод ввода именно того, что я набираю в приглашении, ища это значение (строка/число) и возвращаю его переменную. Скажите: var myGoal = "answer"; Если я введу «ответ» в подсказку, какой хороший метод должен был бы взять значение моего поиска «ответ» и вернуть ли он myGoal в предупреждении? – Francis

0

Единственный способ достичь желаемого - использовать функцию eval. Эваль также известен как «злая» функция. Это может привести к серьезным нарушениям безопасности вашего кода и крайне неэффективно. Не используйте eval.

Проблема в том, что значение, присвоенное переменной, всегда будет строкой, числом, логическим, неопределенным, массивом, функцией или объектным литералом. Вы не можете назначить имя переменной другой переменной в качестве значения, потому что, когда одна переменная назначается другой, содержимое переменной является тем, что фактически назначено.

Вам нужно будет провести редизайн теста, который вы пытаетесь написать, для проверки на явно заданное значение вместо преобразования строки в имя переменной.

2

Нечто подобное будет делать трюк:

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

Это в основном итерацию, хотя все в глобальном объекте (окно), и выстреливает предупреждения, когда он находит, что приравнивает значение, которое вы ищете ,

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); 
    } 
}