2012-04-28 34 views
0

你怎麼做了以下JS變量引用複雜的變量:引用在JavaScript

  1. 當你有一個數組(x[0], x[1], ...),和你有一個像這樣的按鈕:

    <button onclick="say(0)"></button> 
    

    的函數看起來像這樣:

    function say(src){ 
        // Define the box (some random div element will do) 
        var box = document.querySelector('#box'); 
    
        // This is wrong, I know... I need to refer to the variable 'response[0]' in this case... 
        box.innerHTML = response[src]; 
    } 
    
  2. 當你有以下lis變量T:

    var book = "Some Book"; 
    var shelf = "Some Shelf" 
    var bookshelf = "The cake!" 
    

在這種情況下,如果我想(無論何種原因)是指可變bookshelf,我怎麼辦呢通過結合其他兩個變量的變量名?

我的意思是,我不能這樣做var x = book + shelf;,因爲那會給我result = "Some BookSome Shelf"

回答

1

不要讓他們的變量,讓他們一個對象的屬性:

var tags = { 
    book: 'Some book', 
    shelf: 'Some shelf', 
    bookshelf: 'The Cake!' 
}; 

var which = 'bookshelf'; 
var x = tags[which]; 
1

你可能想給他們一個對象的屬性(雖然他們很可能已經window對象的屬性) :

var stuff = { 
    book: "Some book!", 
    shelf: "Some shelf", 
    bookshelf: "The cake!" 
}; 

function say(src) { 
    // Define the box (some random div element will do) 
    var box = document.querySelector('#box'); 

    box.innerHTML = stuff[response[src]]; 
} 
+0

從技術上講,根據你的代碼,是不是'東西'現在是一個對象?得到「蛋糕!」將需要你打電話stuff.bookshelf ... 看,我的問題是這樣的:我如何通過動態引用書架部分獲得變量'stuff.bookshelf'?我當然不能做var x = book,var y = shelf,然後調用stuff.x + y ...這就是我正在尋找的... – Abhishek 2012-04-30 13:09:39

+0

@Abhishek:您使用括號語法。一切都是JavaScript中的一個對象。所以'stuff [x + y]'。 – Ryan 2012-04-30 13:25:01

+0

對不起,但我似乎並沒有理解這裏的思路......我現在被一個錯誤說成'書架沒有定義':(嗯...... – Abhishek 2012-04-30 14:01:50