问题
我试图遍历表中具有特定格式 id 的每一行。选择了正确的行数,但每当我尝试从 obj 获取属性时,都会遇到'未定义'问题。
<tr class="" data-uid="45" id="fixed_user_45">...
还有 JavaScript...
$('tr[id^="fixed_user_"] ').each(function(obj, i) {
var id = $(obj).id; // returns 'undefined'
console.log(id); //prints 'undefined' the correct number of times
});
无论我尝试选择哪个属性以及如何处理它,即innerText、innerHTML、.attr('data-uid'),都会发生这种情况。全部都是未定义的。
<小时/> 其他详细信息:为了完整起见...我将在上面的每个函数中嵌套以下内容后循环遍历每个 td。
$('td').each(function (obj, i) {
<小时/>
感谢大家的帮助。
最佳答案
在 JavaScript 代码片段中,您的参数顺序错误
.each(function(obj, i) {
正确的顺序是
.each(function(i, obj) {
然后你必须调用 jQuery .attr()
函数来获取 id。
$(obj).attr('id')
但是,您可以不获取任何参数(如果不需要索引)并使用 this
作为当前对象。
$(this).attr('id');
要查看它的工作情况,请转到此 jsfiddle https://jsfiddle.net/zv6guhzn/1/
如果您想循环嵌套 td,我建议使用 .find()
,它比一般选择器 $()
更快,因为它从选定的位置开始搜索嵌套元素。
$(obj).find('td').each(itd, objtd){
console.log( $(objtd).text() );
}
带有嵌套循环的完整示例 https://jsfiddle.net/zv6guhzn/2/
关于javascript - 从 .each 返回的“未定义”在 tr 上运行并选择了 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34828569/