使用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
我是使用数组的新手......
答案 0 :(得分:2)
你可以这样做:
var l1 = $('#datatable td:nth-child(2)').map(function() {
return $(this).text();
}).get();
//l1 = [0, 23.6, 20.6]
这使用.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);
说明:
values
变量并将其设置为空数组。tr
中的每个#datatable
。td
中第一个tr
的文字添加到values
数组中。values
现在填充了值。答案 2 :(得分:1)
td:first-child
将无法匹配任何内容,因为<td>
个元素都不是第一个子元素(它们前面有<th>
)。相反,请使用td:nth-child(2)
。