0

我正在尝试使用构建数组 userRow{}

$('#divResults tr').find('td:nth-child(2)').text();

这将返回 12 个名字,从 html 表列中获取。约翰、戴夫等。

$('#divResults tr').find('td:nth-child(3)').text();

返回中间名等。

我试过的:

            for ( var i=0; i < 12; i++) {

            userRow[i]['jurorFN'] = $('#divResults tr').find('td:nth-child(2)').text();
            userRow[i]['jurorMN'] = $('#divResults tr').find('td:nth-child(3)').text();
            userRow[i]['jurorLN'] = $('#divResults tr').find('td:nth-child(4)').text();
        }

这不会 console.log 任何东西

我希望它循环桌子上的所有项目并拥有它,所以如果我提醒 userRow[1] 它会输出 Dave, M, Johnson (first middle last) 等

4

3 回答 3

2

您需要遍历每个$('#divResults tr')

var userRow = [];
$('#divResults tr').each(function(i) {
    var tds = $(this).find('td');
    userRow[i] = {}
    userRow[i].jurorFN = tds.eq(2).text();
    userRow[i].jurorMN = tds.eq(3).text();
    userRow[i].jurorLN = tds.eq(4).text();
});

否则,您所做的就是将第一行复制到数组中 12 次


或与map

var userRow = $('#divResults tr').map(function() {
    var tds = $(this).find('td');
    return {
        jurorFN: tds.eq(2).text(),
        jurorMN: tds.eq(3).text(),
        jurorLN: tds.eq(4).text()
    };
}).get();

我所做的其他外观更改:

  • 替换.find('e:nth-child(n)').find('e').eq(n), 因为它允许find('e')计算一次并重复使用
  • 替换obj['validIdentifier']obj.validIdentifier
于 2013-09-04T22:26:25.717 回答
0

在 js 中没有关联数组之类的东西,只有以数组样式访问的对象。我认为您应该在输入一些日期之前定义对象:userRow[i] = {}

其余的代码对我来说还不清楚......

于 2013-09-04T21:12:35.153 回答
0

仅使用您提供的代码,试一试:

var userRow = [];
for ( var i=0; i < 12; i++) {
  var jurorFN = $('#divResults tr').find('td:nth-child(2)').text();
  var jurorMN = $('#divResults tr').find('td:nth-child(3)').text();
  var jurorLN = $('#divResults tr').find('td:nth-child(4)').text();
  var fullName = jurorFN + ' ' + jurorMN + ' ' + jurorLN;
  userRow.push(fullName);
}
console.log(userRow[0]); // up to userRow[11]
于 2013-09-04T22:16:19.047 回答