0

我的页面上有多个tables。我想从所有表中选择一个特定的列,但我无法理解我的代码的问题。
它看起来像这样:

function getTableColumnValues(){
    var table, columnValue, tableId
    table=document.getElementsByTagName('table');
    for(l=1;l<table.length;l++){
        tableId = table[l].id
        if(tableId != ""){
            columnValue = $(tableId+'>tbody>tr>td:nth-child(2)').each(function(){ // Here 2 is the column number of which the data I want. 
                $(this).text()
                });
            console.log('TABLE ID: ',tableId);
            console.log("COLUMN VALUE: ",columnValue);
        }
    }
}

但我的调试器控制台显示了这一点:

TABLE ID: id_219
COLUMN VALUE: Object[]

TABLE ID: id_220
COLUMN VALUE: Object[]

TABLE ID: id_221
COLUMN VALUE: Object[]

可以将 jquery 放在 javascript 代码中吗?
请帮助我,我在哪里做错了?

4

3 回答 3

2

这是我的建议

  1. 仅获取具有 ID 的表
  2. 在表格及其单元格上使用 jQuery .each
  3. 通过您想要的列以获得未来的灵活性

现场演示

function getTableColumnValues(col){
    var columnValues=[];
    $('table[id]').each(function() {
        $('tr>td:nth-child('+col+')',$(this)).each(function() {
          columnValues.push($(this).text());
        });
    });
    return columnValues;
}
var vals = getTableColumnValues(2);
window.console && console.log(vals);
于 2013-08-12T11:49:29.437 回答
2

您需要将console.logfor 值放在每个中,因为它是您正在查看的迭代:

for(l=1;l<table.length;l++){
    tableId = table[l].id
    if(tableId != ""){
        console.log('TABLE ID: ',tableId);
        $(tableId+'>tbody>tr>td:nth-child(2)').each(function(){ // Here 2 is the column number of which the data I want. 
            var columnValue = $(this).text();
            console.log("COLUMN VALUE: ", columnValue);
        });
    }
}

它当前显示的原因Object[]是因为它的返回值each()是一个普通的 jQuery 对象——您需要在处理函数中处理迭代的目标元素。

另外,请注意@mplungjan 关于纯 javascript 和 jQuery 的奇怪组合的建议。

于 2013-08-12T10:02:48.443 回答
0
function getTableColumnValues(){
    var table=document.getElementsByTagName('table');
    for(l=1;l<table.length;l++){
        for(i=1;i<table.rows.length;i++){
           console.log(table.rows[i].cells[2]);
        }
    }
}
于 2013-08-12T10:04:55.353 回答