2011-11-04 45 views
0

的名字,我想在JavaScript中創建一個新的變量,但它的名字應該做一個陳舊的部分和可變一個這樣的:的Javascript:給一個變量由2個變量

tab_counter = 1; 
var editor + tab_counter = blabla 

以及我想要的在這種情況下,新的變量名稱爲editor1,這可能嗎?

+4

eval(「var editor」+ tab_counter); – Birey

+0

使用一個[數組](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array) – Mat

+0

然後我怎麼可以用它來形容它? –

回答

6

不能創建一個獨立的變量名稱的方式(除非全球)(編輯或除非eval()),但你可以創建一個對象屬性:

var tab_counter = 1; 
var someObject = {}; 
someObject['editor' + tab_counter] = "bla bla"; 

你可以像這樣的「窗口」屬性創建全局變量,但你可能不應該因爲全局變量讓小貓哭泣。

(現在,如果你真的只是通過增加計數器索引,你可能會使用一個數組只考慮。)

編輯也看到@ Birey的有點不安,但完全正確的觀察,您可以使用「 eval()「來做你想做的事情。

+1

+1爲反對做小貓提供建議cwy –

+0

所有你善良的人投票我都忽略了這樣一個事實,即答案不像原來寫的那樣完全正確:內置的「eval()」可以做什麼OP想要的,如果他能忍受的話! – Pointy

+0

我贊成你對小貓的好意。我認爲答案很糟糕:D –

1

你可以通過Birey使用的eval方法,或者你可以創建一個對象,如自定義屬性...

obj[editor + tab_counter] = blabla; 

但它聽起來像是你要去這樣做無論你做什麼以一種特別可怕的方式。如果你只是想儲存多個項目,你可以索引使用數組...

var array = []; 
array[0] = blabla; 
array[1] = blabla2; 

alert(array[0]); //shows value of blabla 
alert(array[1]); //shows value of blabla2 
1

有可能

var tab_counter=1; 
eval("var editor"+tab_counter+"='blah'") 
alert(editor1); 
eval("var editor"+tab_counter+1+";") 
editor2='blahblah'; 
alert(editor2); 

http://jsfiddle.net/5ZLYe/

+1

你是你的代碼的創建者,你應該知道你的變量。簡要解釋你的情況,你究竟想要達到什麼目的。 – Birey

+0

我在佈局中有一個可變數量的選項卡:每次我創建一個新選項卡時,它都會執行tab_counter ++現在我想爲每個選項卡編輯器創建一個新的變量+ tab_counter,我們就可以。然後用戶在標籤號16中,並且有一個名爲tab_current = 16的變量;現在我想使用tab_current使用editor16,我該怎麼做? –

+0

@Matteo有一個名爲'tabs'的數組,當你創建一個新的標籤時,在'tabs'中存儲對它的引用。例如'tab [tab_counter] = newTab'。 –

0

好像你可能要考慮使用一個像這樣的詞典。 This link其中引用這個link描述你的選擇。

相關問題