2009-09-02 118 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. 在一个下拉用户选择与调用load('data_1')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 2009-09-02 22:00:08

2

,或者你可以简单地使用

alert(eval(data)) 
+1

哇!使用eval()时你必须非常小心! http://stackoverflow.com/questions/86513/why-is-using-javascript-eval-function-a-bad-idea – 2009-09-02 18:38:53

+0

很好看他粘贴的代码我没有看到很多问题与评估... – 2009-09-02 18:50:42

+1

as在帖子中的第二个答案中指出:eval并不总是邪恶的。有些时候它完全合适。 – 2009-09-02 18:52:03

3

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

window['the_variable_name'] 

例如引用它

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

回答了我的需求(和标题大声笑)。 TY – 2013-04-15 21:54:36