2009-09-02 185 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