0

ページに複数tableの があります。すべてのテーブルから特定の列を選択したいのですが、コードの問題を理解できません。
次のようになります。

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[]

javascript コード内に jquery を配置しても問題ありませんか?
私が間違っているところを教えてください。

4

3 に答える 3

2

console.logfor を each 内に配置する必要があります。これは、見ている反復であるためです。

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 オブジェクトであるためです。ハンドラー関数内で反復のターゲット要素を処理する必要があります。

また、プレーンな JavaScript と jQuery の奇妙な組み合わせに関する @mplungjan のアドバイスにも注意してください。

于 2013-08-12T10:02:48.443 に答える
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 に答える
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 に答える