2013-04-12 135 views
0

我創建了一個枚舉名稱的簡單html,其中的人名稱爲類。然後我得到類名並根據數組進行檢查。結果是未定義的。這裏是我的代碼:從jquery數組返回值

var prof_name = $(this).attr('class'); 
var n = prof_name.split(' '); 
var name_out = n[0]; 

var nameList = {'rom':'Rommel Santiago','holy':'Holiander Fields'}; 
var nameValue = nameList.nameout; 

alert(nameValue); //this pops up as undefined 

alert(nameList.rom) // this pops up as 'Rommel Santiago' 

我錯過了什麼?

謝謝。

回答

2

問題是你不正確地引用你的數組。我假設你的類名$(this)rom holy

你檢索rom這樣的:var name_out = n[0];

而且你要引用的romnameList,你可以這樣:

var nameValue = nameList[name_out]; 

完成此操作後,您的更新代碼將如下所示:

var prof_name = $(this).attr('class'); 
var n = prof_name.split(' '); 
var name_out = n[0]; 

var nameList = {'rom':'Rommel Santiago','holy':'Holiander Fields'}; 
var nameValue = nameList[name_out]; 

alert(nameValue); //this pops up as Rommel Santiago 

工作實例:http://jsfiddle.net/6GM7T/2/


此外

我建議你不要使用類用於存儲數據。

可以使用data屬性標記來代替,就像這樣:

<div id="myDiv" data-name="Rommel Santiago"></div> 

而且你可以很容易地使用檢索與jQuery的數據是:

$('#myDiv').data('name'); //returns Rommel Santiago 
+0

嗨Axel,我仍然得到相同的結果。如果我提醒nameList.name_out,我得到未定義。如果我提醒nameList.rom,那麼我會得到該值。這似乎是name_out值格式不正確。 –

+0

您可以發佈您試圖從中檢索這些值的HTML嗎? – Axel

+0

我已經用解決方案更新了我的答案。我相信你只是不正確地引用你的數組。 – Axel

1

我認爲OP希望使用值爲name_out作爲nameList的索引,在這種情況下:

var nameValue = nameList.nameout; 

應該是:

var nameValue = nameList[name_out]; 
1

正如他們所說

它的工作原理與此

var prof_name = "rom holy"; 
var n = prof_name.split(' '); 
var name_out = n[0]; 
alert("Parameter Selected = "+name_out); 
var nameList = {'rom':'Rommel Santiago','holy':'Holiander Fields'}; 
var nameValue = nameList[name_out]; 

alert("From Object : "+nameValue); //this pops up as undefined 

alert("Actual Value = "+nameList.rom) // this pops up as 'Rommel Santiago' 

http://jsfiddle.net/Kartheek/nx3WQ/1/

如果你調用像nameList.nameout它實際上搜索nameout作爲參數在名單中

if你使用nameList [nameout]它搜索索引名稱值。