在获取ID时获取NaN而不是实际数字
Getting NaN instead in actual number when trying to fetch ID from
我有一个表记录,每一行有唯一的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>');
}
我是这样做的:
$(document).ready(function() {
$("#editBtn").on("click", function() {
var iUserId = parseInt($(this).closest("span").attr('data-i-user-id'));
console.log(iUserId);
});
});
有两个原因:
1。畸形的HTML
您没有关闭span
标签:
<span data-i-user-id='"+aUsers[i].id+"'</span>
应:<span data-i-user-id='"+aUsers[i].id+"'></span>
注意下一个元素也会重复这个问题:
<input type='checkbox' id='chk_"+i+"'"+'</td>
我建议您通过可用的DOM(或等效的jQuery)方法创建节点,而不是提供一个很长的HTML字符串,这通常会导致这类问题。
2。查找目标元素的选择器错误
editBtn
点击处理程序中的选择器不匹配任何元素:
$(this).closest("span")
这是因为closest
看起来只是按钮的父元素,而预期的span
元素更像是按钮的远程侄子。
改为:
$(this).closest("tr").find("span[data-i-user-id]")
将找到父tr
元素,它是按钮和目标span
元素的共同父元素。然后,它将在具有data-i-user-id
属性的span
元素tr
的子元素中搜索。
完整的正确语句如下:
var iUserId = parseInt($(this).closest("tr").find("span[data-i-user-id]").attr('data-i-user-id'));
相关文章:
- javascript从id获取数字
- 通过正则表达式获取数字
- 如何使用jquery获取数字元素的文本并放入数组中
- 浏览器在尝试获取数字的最大素因数(Javascript)时崩溃
- parseInt 不起作用,从字符串中获取数字
- 当浮点部分为空时,从 JQuery 中的输入元素获取数字值不起作用
- 从名称中获取数字
- 使用 Javascript 从 html 下拉菜单中获取数字形式的值
- 从表单、计算和使用 javascript 更新 html 内容中获取数字值
- 仅从 URL 中获取数字
- JavaScript正则表达式在字符串后获取数字
- 如何根据数字的值获取数字的名称
- 使用 javascript 获取数字
- 只需要从字符串中获取数字值
- 从提示和循环中获取数字
- 从JS代码中获取数字并从中构造一个数组
- 如何在Javascript中从字符串中获取数字
- 如何从HTML表单中获取数字并将其传递给JavaScript
- 如何从哈希中获取数字
- 如何在Javascript中只获取数字