#javascript #jquery
#javascript #jquery
Вопрос:
Я хочу, чтобы пользователь мог видеть значение переменной, записав ее имя в текстовой области, упрощенно:
var money = "300$";
var input = "money"; //user wants to see money variable
alert(input); //This would alert "money"
Возможно ли вообще вывести (в этом примере) «300 $»?
Спасибо за помощь!
Ответ №1:
Вместо отдельных переменных используйте объект в качестве ассоциативного массива.
var variables = {
'money': '300$'
}
var input = 'money';
alert(variables[input]);
Ответ №2:
Вы можете использовать объект, а затем определить переменную на ходу в качестве свойств этого объекта:
var obj = {}, input;
obj.money = "300$";
input = "money";
alert(obj[input]);
obj.anotherMoney = "400$";
input = "anotherMoney";
alert(obj[input]);
Ответ №3:
Простой способ, вы все равно можете попробовать этот :
var money = "300$";
var input = "money"; //user wants to see money variable
alert(eval(input)); //This would alert "money"
Комментарии:
1. Неразумно использовать
eval
для нефильтрованного ввода. Кроме того, комментарий рядом с вашей последней строкой кода неверен.
Ответ №4:
Вот ответ, который использует текстовую область в соответствии с запросом.
JSFiddle http://jsfiddle.net/7ZHcL /
HTML
<form action="demo.html" id="myForm">
<p>
<label>Variable name:</label>
<textarea id="varWanted" name="varWanted" cols="30" rows="1"></textarea>
</p>
<input type="submit" value="Submit" />
</form>
<div id="result"></div>
jQuery
$(function () {
// Handler for .ready() called.
var variables = {
'money': '300$',
'date_now': new Date()
}
//Detect all textarea's text variation
$("#varWanted").on("propertychange keyup input paste", function () {
//If the text is also a key in 'variables', then it display the value
if ($(this).val() in variables) {
$("#result").html('"' $(this).val() '" = ' variables[$(this).val()]);
} else {
//Otherwise, display a message to inform that the input is not a key
$("#result").html('"' $(this).val() '" is not in the "variables" object');
}
})
});