0

我创建了一个简单的 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'

我错过了什么?

谢谢。

4

3 回答 3

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
于 2013-04-12T15:09:21.530 回答
1

我相信 OP 希望使用 的值name_out作为 的索引nameList,在这种情况下:

var nameValue = nameList.nameout;

应该:

var nameValue = nameList[name_out];
于 2013-04-12T15:21:38.337 回答
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] 它会搜索索引 nameout 值。

于 2013-04-12T16:02:09.230 回答