2013-04-12 94 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]它搜索索引名称值。