2012-10-24 82 views
1

我需要一些javascript原理的幫助。 我有一個變量,其中變量名稱的一部分是「動態」。讓我試着解釋一下;如何獲得基於兩個變量的變量值

var name_city = "London"; 
var name_code = "500"; 

從網頁我有一個名爲「type」的值。這將是「城市」或「代碼」。

(我只是讓manualy這裏這個例子的目的)

var type = "city"; 

因此,與「城市」爲類型的值,我現在想提醒「name_city」。 但我不知道如何用JavaScript做到這一點。

有誰知道嗎?

在PHP我認爲這將是這樣的:

$type = "city"; 

$varname = 'name_'. $type; 
echo ${$varname}; 

我明白任何幫助或在正確的方向:-)

+0

試試看這些:http://stackoverflow.com/questions/7762502/dynamic-javascript-variable-names,http://stackoverflow.com/questions/4385084/javascript-dynamic-variables?lq=1或http://stackoverflow.com/questions/12826154/can-i-create-dynamic-object-names-in-javascript?lq=1 – Chase

回答

2

一些線索。爲了做到這一點,你需要存儲對象字面值內的數據,您可以在其中動態訪問其密鑰。如果您在global/window對象中寫入這些變量,則可以用相同的方式訪問它們。

// global scope 
var name_city = "London"; 

var type = "city"; 

console.log(window[ "name_" + type ]); 

,如果你不是在全球範圍內(實際上,不應該在所有的情況),這是行不通的。所以,你應該將數據存儲在一個自定義的對象

var data = { 
    "name_city": "London", 
    "name_code": "500" 
}; 

,然後做同樣的事情,只是獲得通過

console.log(data[ "name_" + type ]); 
+1

+1你完成了我之前的範圍問題,所以我刪除了我的上面。 –

+0

這就是我一直在尋找的。謝謝! – user1771176

0

如果你有幾個「平行」變量的所有描述不同的方面同一個實體,你幾乎總是會更好使用對象來代替,即

var name = {city: "London", code: 500}; 

然後,您可以通過索引與變量,例如訪問單個屬性name[type]或按屬性名稱,例如name.code。一個很大的優點是你可以把對象當作一個單元來處理,比如把它傳遞給一個函數,而不是傳遞幾個不同的變量。