单击表格行并获取所有单元格的值

问题描述:

我不知道JQuery,所以我希望有一种方法可以在纯JavaScript中执行此操作。单击表格行并获取所有单元格的值

我需要单击一个表格行并获取该行中每个单元格的值。这里是我的表的格式:

<table class='list'> 
    <tr> 
     <th class='tech'>OCB</th> 
     <th class='area'>Area</th> 
     <th class='name'>Name</th> 
     <th class='cell'>Cell #</th> 
     <th class='nick'>Nickname</th> 
    </tr> 
    <tr onclick="somefunction()"> 
     <td>275</td> 
     <td>Layton Installation</td> 
     <td>Benjamin Lloyd</td> 
     <td>(801) 123-456</td> 
     <td>Ben</td> 
    </tr> 
</table> 

反正有没有把每个单元格的唯一ID?

+0

你可以某种'这个for'循环。 – Sethen 2013-05-07 18:36:13

没有必要添加id或将多个事件处理程序添加到表中。一键式事件就是所需要的。你也应该使用表格的add和tbody来将标题从内容中分离出来。

HTML:

<table class='list'> 
    <thead> 
     <tr> 
      <th class='tech'>OCB</th> 
      <th class='area'>Area</th> 
      <th class='name'>Name</th> 
      <th class='cell'>Cell #</th> 
      <th class='nick'>Nickname</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td>275</td> 
      <td>Layton Installation</td> 
      <td>Benjamin Lloyd</td> 
      <td>(801) 123-456</td> 
      <td>Ben</td> 
     </tr> 
    </tbody> 
</table> 

的JavaScript:

var table = document.getElementsByTagName("table")[0]; 
var tbody = table.getElementsByTagName("tbody")[0]; 
tbody.onclick = function (e) { 
    e = e || window.event; 
    var data = []; 
    var target = e.srcElement || e.target; 
    while (target && target.nodeName !== "TR") { 
     target = target.parentNode; 
    } 
    if (target) { 
     var cells = target.getElementsByTagName("td"); 
     for (var i = 0; i < cells.length; i++) { 
      data.push(cells[i].innerHTML); 
     } 
    } 
    alert(data); 
}; 

例子:

http://jsfiddle.net/ZpCWD/

+0

像冠军一样工作,并感谢 – 2013-05-07 19:23:54

+0

的例子,唯一的问题是它也获得了html标签之间的​​ – Gokigooooks 2015-04-22 18:23:10

+0

那么OP的代码中没有任何标签....如果是这样的话有textContent ... – epascarello 2015-04-22 18:25:03

var elements = document.getElementsByTagName('td'); 
for (var i =0; i < elements.length; i++) { 
    var cell_id = 'id' + i; 
    elements[i].setAttribute('id', cell_id); 
} 

也许把这样的东西放在函数中,你的onclick链接从tr

+0

有没有必要添加ID到一切。 – epascarello 2013-05-07 18:51:35

+0

@epascarello虽然这可能是真的,他的问题是否说有没有把每个单元格的唯一ID?我只是回答它。 – aug 2013-05-07 19:00:19

检查这个小提琴link

HTML:

<table id="rowCtr" class='list'> 
    <thead> 
     <tr> 
      <th class='tech'>OCB</th> 
      <th class='area'>Area</th> 
      <th class='name'>Name</th> 
      <th class='cell'>Cell #</th> 
      <th class='nick'>Nickname</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td>275</td> 
      <td>Layton Installation</td> 
      <td>Benjamin Lloyd</td> 
      <td>(801) 123-456</td> 
      <td>Ben</td> 
     </tr> 
    </tbody> 
</table> 

JAVASCRIPT:

init(); 
function init(){ 

    addRowHandlers('rowCtr'); 

} 

function addRowHandlers(tableId) { 
    if(document.getElementById(tableId)!=null){ 
     var table = document.getElementById(tableId); 
     var rows = table.getElementsByTagName('tr'); 
     var ocb = ''; 
     var area = ''; 
     var name = ''; 
     var cell = ''; 
     var nick = ''; 
     for (var i = 1; i < rows.length; i++) { 

      rows[i].i = i; 
      rows[i].onclick = function() { 

       ocb = table.rows[this.i].cells[0].innerHTML;     
       area = table.rows[this.i].cells[1].innerHTML; 
       name = table.rows[this.i].cells[2].innerHTML; 
       cell = table.rows[this.i].cells[3].innerHTML; 
       nick = table.rows[this.i].cells[4].innerHTML; 
       alert('ocb: '+ocb+' area: '+area+' name: '+name+' cell: '+cell+' nick: '+nick); 
      }; 
     } 
    } 
} 
+0

@Cameron Darlington请让我知道它是否满足您的要求。谢谢。 – 2013-05-07 19:12:22

+0

谢谢这对我非常有帮助 – rajn 2018-02-27 00:36:23