2009-09-02 2 views
2

Так вот то, что я пытаюсь сделать:Передача JS имя переменной функции

  1. Моя переменная с именем data_1 установлен.

    var data_1 = { 
        "y_legend": { 
        "text": "# of Patients", 
        "style": "{font-size: 20px; color: #778877}" 
        }, 
        "x_legend": { 
        "text": "AUG 09 - OCT 09", 
        "style": "{font-size: 20px; color: #778877}" 
        } 
    }; 
    
  2. В раскрывающемся пользователь выбирает опцию со значением data_1, который вызывает load('data_1').

    function load(data) 
    { 
        tmp = findSWF("my_chart"); 
        x = tmp.load(JSON.stringify(data)); 
    } 
    

Моей проблема: Я выбрать опцию со значением data_1, а не самый переменным. Так что в моей функции load('data_1'), когда я alert(data) Я получаю data = 'data_1'.

Как я могу получить содержимое моей переменной data_1 в моей функции загрузки, передав только имя строки?

ответ

3
var data_1 = { /* data goes here */ }; 

var data_choices = {1: data_1, 2: data_2, /* and so on */}; 

var load = function (data) { 
    // data is "1", "2", etc. If you want to use the full data_1 name, change 
    // the data_choices object keys. 

    var tmp = findSWF("my_chart"); 
    var x = tmp.load(JSON.stringify(data_choices[data])); 
} 
+0

Спасибо! Это сработало отлично! Я также должен попробовать окно выше. – Fostah

2

или вы могли бы просто использовать

alert(eval(data)) 
+1

Будь! При использовании eval() вы должны быть ДЕЙСТВИТЕЛЬНО ОСТОРОЖНЫ! http://stackoverflow.com/questions/86513/why-is-using-javascript-eval-function-a-bad-idea –

+0

Хорошо смотря на код, который он вставил, я не вижу много проблем с eval ... –

+1

as говорится во втором ответе в сообщении, которое было увязано: eval не всегда злой. Бывают моменты, когда это вполне уместно. –

3

Если это глобальная переменная, вы можете ссылаться на него с

window['the_variable_name'] 

Э.Г.

function load(data) 
{ 
    tmp = findSWF("my_chart"); 
    x = tmp.load(JSON.stringify(window[data])); 
} 
+0

ответил на мои потребности (и название lol). ти – 2013-04-15 21:54:36

Смежные вопросы