从表格单元格中取值并转换为数组

时间:2010-04-10 17:37:43

标签: javascript jquery arrays

使用jquery我需要从表格单元格中检索一个数组,格式化数据并将其传递给js函数。

我正在使用的代码是:

 var l1 = new Array();
   $('table#datatable tbody td:first-child').each(function() {
   l1.push($(this).text());
   });

这是表格片段

  <tr>
               <th scope="row">Age: 0-4</th>
               <td>0</td>
               <td>9.7</td>
           </tr>
           <tr>
               <th scope="row">5-17</th>
               <td>23.6</td>
               <td>18.0</td>
           </tr>
           <tr>
               <th scope="row">Total 0-17</th>
               <td>20.6</td>
               <td>16.1</td>
           </tr>

表的id是“datatable”。我想返回每个第一个td的内容数组,然后像这样格式化: 0,23.6,20.6

我是使用数组的新手......

3 个答案:

答案 0 :(得分:2)

你可以这样做:

var l1 = $('#datatable td:nth-child(2)').map(function() {
  return $(this).text();
}).get();
//l1 = [0, 23.6, 20.6]

See here for a demo

这使用.map()从元素中获取数组。你的主要问题是:first-child需要是父的第一个孩子,它并不代表“这种类型的第一个孩子”,所以只有<th>会在您的代码中为:first-child。相反,您需要第二个孩子,或:nth-child(2)来获取第一个<td>元素。

答案 1 :(得分:1)

这应该有效:

var values = [];
$('#datatable tbody tr').each(function () {
    values.push($('td:first', this).text());
});
console.log(values);

说明:

  • 第1行:创建values变量并将其设置为空数组。
  • 第2行:遍历tr中的每个#datatable
  • 第3行:将td中第一个tr的文字添加到values数组中。
  • values现在填充了值。

答案 2 :(得分:1)

td:first-child将无法匹配任何内容,因为<td>个元素都不是第一个子元素(它们前面有<th>)。相反,请使用td:nth-child(2)