我这里有HTML代码:
<div class="actResult" style="border: solid">
<table>
<tbody>
<tr>
<td>Order Number</td>
<td>1</td>
</tr>
<tr>
<td>Customer Number</td>
<td>3</td>
</tr>
<tr>
<td>Complaint Code</td>
<td>b</td>
</tr>
<tr>
<td>Receivable Receipt Number</td>
<td>5</td>
</tr>
<tr>
<td>Date Called</td>
<td>2014-03-19</td>
</tr>
<tr>
<td>Scheduled Day Of Checkup</td>
<td>2014-03-19</td>
</tr>
<tr>
<td>Scheduled Day Of Service</td>
<td>2014-03-21</td>
</tr>
<tr>
<td>Checkup Status</td>
<td>Y</td>
</tr>
<tr>
<td>Service Status</td>
<td>N</td>
</tr>
<tr>
<td>Technician Number Checkup</td>
<td>3</td>
</tr>
<tr>
<td>Technician Number Service</td>
<td>1</td>
</tr>
</tbody>
</table>
</div>
我想获取标签的值并将它们放入一个数组结构的数组中(&#34;第一个td&#34; =&gt;&#34;第二个td&#34;),所以对于在这种情况下,数组将是数组(&#34;订单号&#34; =&gt;&#34; 1&#34;,&#34;客户编号&#34; =&gt;&#34; 3&#34;, &#34;投诉代码&#34; =&gt;&#34; b&#34;,...)等等。
之后,最终的数组将被发送到PHP代码中。
我一直在尝试使用var html = $(this).filter(function( index ){ return $("td", this) }).filter(":odd").text();
以及filter()的各种其他组合从HTML中提取一些值,但它似乎并不适合我。
我该如何做我想做的事?
答案 0 :(得分:4)
的 jsFiddle Demo
强> 的
您将要使用.each
并迭代表中的行。对于每一行,将第一个单元格(.eq(0)
)作为键,将第二个单元格(.eq(1)
)作为值。将它们放在结果对象中。
//object to hold resulting data
var result = {};
//iterate through rows
$('.actResult tr').each(function(){
//get collection of cells
var $tds = $(this).find('td');
//set the key in result to the first cell, and the value to the second cell
result[$tds.eq(0).html()] = $tds.eq(1).text();
});
答案 1 :(得分:1)
您可以获取表元素的rows
属性,并根据单元格的值创建一个对象:
var rows = document.querySelector('.actResult table').rows,
data = {}, c, l = rows.length, i = 0;
for (; i < l; i++) {
c = rows[i].cells;
data[c[0].innerHTML] = c[1].innerHTML;
}