2012-09-02 58 views
0

如何獲取變量的名稱?在jQuery中獲取變量名

比方說,我有一個空的變量:

var myvariable; 

我怎樣才能得到變量名,使這個:

alert(this_is_what_i_am_looking_for); 

顯示:

myvariable 

編輯:

也許我是過於複雜的事情。我真正的問題是,我有這樣的兩個變量:

var firstVariable; 
var secondVariable; 

而且我希望創建一個字面上有此名稱的第三個變量:

var firstVariablesecondVariable; 

EDIT2:

感謝了答案,太多的信息,我必須仔細看看。

這是我有:

<div></div> 
<div></div> 
<div></div> 

var i = 0; 
var q = 0; 

$('div').each(function() { 
    var qi; 
    i++; 
});​ 

所以我想創建三個varaibles:VAR 00; VAR 01; VAR 02;當我申請的每個功能的第二次我有三個以上變量

q++; 
i=0; 

這樣:: 然後我將加載更多的div Ajax和做變種10;無功11; VAR 12;

+1

你期望知道嗎?你想用什麼參數搜索?一個值? –

+0

什麼是「this_is_what_i_am_looking_for」。你必須給我們一些工作,在某種程度上涉及到「myvariable」 – Overcode

+0

這並沒有寫出很多意義。也許你可以擴展這個例子。 alert()不知道這個名字怎麼可能? – Pointy

回答

3

變量名稱是標識符,您不能「詢問」標識符的名稱是什麼。你可以做的就是創建一個新的變量與標識符的內容,像這樣:

var var1 = "variable1"; 
var var2 = "variable2"; 

// this will create an property/variable "variable1variable2" 
// on the global namespace. 
window[var1 + var2] = "xyz"; 

var content = variable1variable2; // content = xyz; 
+0

這會在全局範圍內創建變量 –

+0

@andresdescalzo,是的,這隻適用於全局上下文,對於任何其他上下文,您必須在「obj.variable1variable2」之前添加上下文,否則它將不起作用。 – devundef

+0

好吧,我明白了,我只是看起來很清楚 –

0

這是不可能的,你可以做的是一個JSON對象的工作:

var myvars = { 
    'firstVariable': 1, 
    'secondVariable': 2, 
    'firstVariablesecondVariable': function() { return this['firstVariable'] + this['secondVariable']; } 
}; 


console.log(myvars['firstVariable'+'secondVariable']()); 
​ 

run code

對於編輯

var elements = []; 
var myformat = function(n) { return (String(n).length == 1 ? '0' : '') + n; } 
$('div').each(function(i, el) { 
    elements.push(myformat(i)); 
}); 

console.log(elements); 
​ 
// response ["00", "01", "02"] 

run code

編輯II

但如果你想設定值的變量,你可以試試這個:

var elements = {}; // <- object 
var myformat = function(n) { 
    return (String(n).length == 1 ? '0' : '') + n; 
} 
$('div').each(function(i, el) { 
    elements[myformat(i)] = el; 
}); 

console.log(elements);​ 

Object 
00: HTMLDivElement 
01: HTMLDivElement 
02: HTMLDivElement 

run code

2

也許你可以使用一個哈希表映射名稱改爲值。最後,在hashtable中添加名爲barFoo的barFooTest值。

var o = { bar: 'barTest' }; 
o.foo = 'fooTest'; 

var prevKey = ''; 
for(key in o) 
{ 
    prevKey = prevKey + '' + key ; 
    alert(key + ': ' + o[key]); 
} 

o[prevKey] = "barFooTest";