Получение переменной с помощью пользовательского ввода

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