Javascript 将JS变量名传递给函数

Javascript 将JS变量名传递给函数,javascript,json,variables,Javascript,Json,Variables,下面是我想做的: 已设置名为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}" } }; 在下拉列表中,

下面是我想做的:

  • 已设置名为
    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}"
      }
    };
    
  • 在下拉列表中,用户选择一个值为
    data\u 1
    的选项,该选项调用
    load('data\u 1')

  • 我的问题是:我选择的选项的值是
    data_1
    ,而不是变量本身。 因此,在我的函数
    load('data\u 1')
    中,当我
    alert(data)
    时,我得到
    data='data\u 1'

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

    那么,如何通过只传递字符串的名称来获取load函数中变量
    data_1
    的内容呢?

    或者您可以使用

    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]) );
    }
    
    alert(eval(data)) 
    

    如果它是一个全局变量,您可以使用

    window['the_variable_name']
    
    例如


    哇!使用eval()时必须非常小心!正如第二个答案中所说的那样:eval并不总是邪恶的。有时它是非常合适的。@马特·鲍尔不同意给这个答案打-1,因为他建议使用Eval。Eval可以随身使用,但也可以用于调试。谢谢!这工作做得很好!我还得试试上面的窗户。
    function load(data)
    { 
      tmp = findSWF( "my_chart" ); 
      x = tmp.load( JSON.stringify( window[data] ) ); 
    }