2011-05-26 86 views
1

我有一個包含ID的變量。Javascript變量變量(語法錯誤)

var mediaid = '5'; 

,我有一個變量設置

var t1 = 'First'; 
var t2 = 'Second'; 
var t3 = 'THird'; 
etc... 

我試圖讓jQuery的.append功能的內部變量的變量。

$('#block').append('<span>{t+mediaid}</span>'); 

例如,如果mediaid是3,{t+mediaid}應該是t3。但我有語法錯誤。你能修好嗎?

+3

不要那樣做。使用數組。 – Quentin 2011-05-26 18:20:12

+0

@Quentine通常我會使用一個數組,但是這次有一個細節,所以我不能使用數組。我不寫這個細節,因爲它與我的問題沒有關係:)但是,謝謝你,你是對的:) – Eray 2011-05-26 18:25:29

+0

@Eray雖然這個細節與這個問題沒有關係,但我仍然希望聽到它。你能否詳細說明爲什麼你需要這個變量集合(簡而言之)? – 2011-05-26 18:30:35

回答

3
$('#block').append('<span>'+{t+mediaid}+'</span>'); 

我不認爲這是可能的。

你可能要做:

$('#block').append('<span>'+window['t'+mediaid]+'</span>'); 
          //if all those variables are in the window's scope 
更好

var mediaid = '5'; 
var t = ['', 'first', 'second', 'third', ...]; 

$('#block').append('<span>'+t[mediaid]+'</span>'); 
+0

不,那會返回't'(undefined)和'mediaid'的值,而不是他想要的變量。 – 2011-05-26 18:20:38

+0

@Justin,看到我的更新 – Neal 2011-05-26 18:21:43

+0

@Jeremy,那是什麼 – Neal 2011-05-26 18:23:01

1

爲什麼不是你的變量存儲在陣列中,而不是神奇地命名變量?然後你可以通過索引訪問數組元素。

var mediaid = 5; 
var t = [ 
    'Zeroth', 
    'First', 
    'Second' 
    // etc... 
]; 

$('#block').append('<span>' + t[mediaid] + '</span>'); 
-1

試試這個:

$('#block').append('<span>' + eval('t'+mediaid) + '</span>'); 
+1

你不需要'eval()'這個,通過'window'對象訪問變量 $('#block')。append(['',window [t + mediaid],''] .join('')); – 2011-05-26 18:23:48

+0

@The Mask:如果您的文檔將包含'

' 那麼'window [「t5」]'將返回您對該DOM元素的引用,而不是變量't5'的值。參見:http://stackoverflow.com/questions/6130340/window-object-acting-strange-in-chrome-and-ie – 2011-05-26 18:52:51