我想逐行获取表的数据,以创建一个字符串,数据用逗号分隔。该表如下所示:
我希望有一个字符串,表格中的数据用逗号(CSV样式)分隔,如下所示:
myText =始终超过要求 - 基准,1,超过一些要求,1,满足要求,2,
表格HTML如下所示:
我尝试了下面的代码,但是我无法获得只有一行的值/文本,然后在同一行中请求下一个单元格,然后跳转到下一行。
console.log($('.sm-data-table-summary').eq(2).text());
但它检索整个页面中找到的第二个元素的所有表数据。
csv_string += ($('.sm-data-table-summary > tbody').prop("innerText") + ',');
但它获取表的所有数据,意味着选项文本+百分比+数值并通过所有选项,而不是让我选择用逗号分隔
$(element).find('.sm-data-table-summary').each(function() {
console.log($(this).find("tr:nth-child(2)").text());
});
这最后一个是我最接近我想要的,我得到了页面中找到的每个表的第二个文本,百分比和数值。再一次不让我有机会用逗号分开。
你知道一种方法只获得选项文本,然后是百分比,然后是同一行的数值吗?然后转到下一行?
或者可能是错误的方法。
看看这是否有效:
var els = $(".sm-data-table-summary").find(".label,.sm-data-total").get();
var myText = els.map(function(e) { return $(e).text(); }).join(",");
// debugging
console.log("texts:", myText);
document.body.innerHTML += myText;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="sm-data-table-summary" border=1>
<tr>
<td><div class="label">a-label</div></td>
<td>a-percent</td>
<td><div class="sm-data-total">a-1</div></td>
</tr>
<tr>
<td><div class="label">b-label</div></td>
<td>b-percent</td>
<td><div class="sm-data-total">b-1</div></td>
</tr>
</table>
<hr>
如您所见,这只获得每行的label
和sm-data-total
。如果你想要百分比,你所要做的就是将参数改为.find()
。