我创建了一个简单的html来枚举名称,其中人们的名字作为类。然后我获取类名并检查数组。结果未定义。这是我的代码:
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'
我错过了什么?
感谢。
答案 0 :(得分:2)
问题是您错误地引用了数组。我假设$(this)
的班级名称是rom holy
您正在检索rom
,如下所示:var name_out = n[0];
您想引用rom
中的nameList
密钥,您可以这样:
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
答案 1 :(得分:1)
我认为OP希望使用name_out
的值作为nameList
的索引,在这种情况下:
var nameValue = nameList.nameout;
应该是:
var nameValue = nameList[name_out];
答案 2 :(得分: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一样调用它实际上是在namelist中搜索nameout作为参数
如果你使用nameList [nameout],它会搜索index nameout值。