Javascript 尝试从中获取ID时,以实际数获取NaN

Javascript 尝试从中获取ID时,以实际数获取NaN,javascript,jquery,html,Javascript,Jquery,Html,我有一个表记录,每行都有唯一的ID。我正在尝试获取此ID,以便可以使用它来更新这些记录,但我无法这样做,因为我从数据属性获得的是NaN,而不是实际ID 在下面的代码中,我放置了试图从中获取id的数据属性 for( var i = 0; i < aUsers.length; i++ ){ $("#lblUsers").append('<tr><th scope="row">'+aUsers[i].id+"<button class='btn btn-succ

我有一个表记录,每行都有唯一的ID。我正在尝试获取此ID,以便可以使用它来更新这些记录,但我无法这样做,因为我从数据属性获得的是NaN,而不是实际ID

在下面的代码中,我放置了试图从中获取id的数据属性

for( var i = 0; i < aUsers.length; i++ ){
  $("#lblUsers").append('<tr><th scope="row">'+aUsers[i].id+"<button class='btn btn-success' id ='editBtn' data-toggle='modal' data-target='#editModal' contenteditable='false'>Edit</button>"+'</th><td>'+aUsers[i].username+'</td><td>'+aUsers[i].firstName+'</td><td>'+aUsers[i].lastName+'</td><td>'+aUsers[i].email+'</td><td>'+"<span data-i-user-id='"+aUsers[i].id+"'</span><input type='checkbox' id='chk_"+i+"'"+'</td></tr>');
}
原因有两个:

1.格式错误的HTML 您没有关闭
span
标记:

<span data-i-user-id='"+aUsers[i].id+"'</span>
这是因为
最近的
看起来只是按钮的父项,但预期的
span
元素更像按钮的远程侄子

而是写下:

$(this).closest("tr").find("span[data-i-user-id]")
这将找到父元素
tr
元素,它是按钮和目标
span
元素的公共父元素。然后它将在
tr
元素的子元素中搜索,该
span
元素具有
data-i-user-id
属性

完整正确的语句如下所示:

var iUserId = parseInt($(this).closest("tr").find("span[data-i-user-id]").attr('data-i-user-id'));
原因有两个:

1.格式错误的HTML 您没有关闭
span
标记:

<span data-i-user-id='"+aUsers[i].id+"'</span>
这是因为
最近的
看起来只是按钮的父项,但预期的
span
元素更像按钮的远程侄子

而是写下:

$(this).closest("tr").find("span[data-i-user-id]")
这将找到父元素
tr
元素,它是按钮和目标
span
元素的公共父元素。然后它将在
tr
元素的子元素中搜索,该
span
元素具有
data-i-user-id
属性

完整正确的语句如下所示:

var iUserId = parseInt($(this).closest("tr").find("span[data-i-user-id]").attr('data-i-user-id'));

$(this).closest(“span”).attr('data-i-user-id')
的值是多少?我认为它不是一个数字。不要使用
attr
获取数据属性。使用
数据(“i-user-id”)
实际
.data('iUserId')
@sterlingarcherching@Nealha@rlemon虚线版本已弃用;-)但我知道这两种方法的价值是多少(this).closest(“span”).attr('data-I-user-id')?我认为它不是一个数字。不要使用
attr
获取数据属性。使用
数据(“i-user-id”)
实际
.data('iUserId')
@sterlingarcherching@Nealha@rlemon虚线版本已弃用;-)但我知道这两种方法,谢谢你的提示。不过我还是有个男朋友。。。知道为什么吗?@user1866925传递给
parseInt
的参数值是多少?1472752474350这是一个示例值。@user1866925确定吗?举个小例子,你的jQuery选择器也错了。请参阅我的最新答案。如果你调试了你的代码,你会看到,
$(this.closest(“span”)
没有产生任何结果。调试是一项需要培养的技能;-)谢谢你的提示。不过我还是有个男朋友。。。知道为什么吗?@user1866925传递给
parseInt
的参数值是多少?1472752474350这是一个示例值。@user1866925确定吗?举个小例子,你的jQuery选择器也错了。请参阅我的最新答案。如果你调试了你的代码,你会看到,
$(this.closest(“span”)
没有产生任何结果。调试是一项需要培养的技能;-)
var iUserId = parseInt($(this).closest("tr").find("span[data-i-user-id]").attr('data-i-user-id'));