2013-08-12 57 views
0

我的頁面上有多個table s。我想從所有表中選擇一個特定的列,但我無法理解我的代碼片段的問題。
它看起來像這樣:Javascript - 如何獲取表格的特定列數據?

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

$(「#」+ tableId ...但爲什麼混合使用DOM和jQuery?做$('table')。each ...和.eq – mplungjan

回答

2

你需要把console.log爲內各價值,因爲它的迭代你看:

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混合使用的建議。

+0

在我的回答中看到:) – mplungjan

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]); 
     } 
    } 
} 
+0

假設您需要始終獲取第2列。 – Nishanthan

2

這裏是我的建議

  1. 只得到表用的ID
  2. 使用jQuery在桌子上。每次和他們的細胞
  3. 傳給你想要的列未來的靈活性

Live Demo

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); 
相關問題