如果一个表列包含目标单词,则从另一个表列中抓取数据



我想使用 javascript/jQuery 搜索一个 html 表。

如果其中一个单元格包含始终在第五列中的 certan 单词,我想要第一列中的日期。

我附上了我想搜索的表格示例。

我在想我必须在桌子上做一个正则表达式,然后捕获包含文本的单元格?

<table cellspacing="0" cellpadding="1" rules="all" border="1" id="dgNoticeAudit" style="border-color:#CCCCCC;width:98%;border-collapse:collapse;">
<tbody>
<tr class="labelbox" align="center" valign="middle">
<td>21/02/2019 17:32:26</td>
<td>ImportDocument WS</td>
<td>EXTCORRES</td>
<td>CHLGLOG</td>
<td align="left" style="width:250px;">An externally printed NFD document has been imported.</td>
<td align="right">0.00</td>
<td align="right">397.30</td>
</tr>
<tr class="labelbox" align="center" valign="middle">
<td>19/02/2019 13:57:12</td>
<td>BSPR1R</td>
<td>NOTE</td>
<td>CHLGLOG</td>
<td align="left" style="width:250px;">Note inserted</td>
<td align="right">0.00</td>
<td align="right">397.30</td>
</tr>
<tr class="labelbox" align="center" valign="middle">
<td>19/02/2019 13:55:57</td>
<td>BSPR1R</td>
<td>CANCLLEDT</td>
<td>CHLGLOG</td>
<td align="left" style="width:250px;">Cancelled task with Id: TF04563335 - Task type: Enforcement Review - Letter</td>
<td align="right">0.00</td>
<td align="right">397.30</td>
</tr>
<tr class="labelbox" align="center" valign="middle">
<td>19/02/2019 13:55:57</td>
<td>BSPR1R</td>
<td>CLOSEDT</td>
<td>CHLGLOG</td>
<td align="left" style="width:250px;">Closed task with Id: TF04563335 - Task type: Enforcement Review - Letter</td>
<td align="right">0.00</td>
<td align="right">397.30</td>
</tr>
<tr class="labelbox" align="center" valign="middle">
<td>19/02/2019 11:06:21</td>
<td>bspvxs</td>
<td>CLOSEDT</td>
<td>CHLGLOG</td>
<td align="left" style="width:250px;">Closed task with Id: TF04562943 - Task type: Enforcement Review Applications</td>
<td align="right">0.00</td>
<td align="right">397.30</td>
</tr>
<tr class="labelbox" align="center" valign="middle">
<td>19/02/2019 11:03:59</td>
<td>bspvxs</td>
<td>LOGCHLG</td>
<td>CHLGLOG</td>
<td align="left" style="width:250px;">Challenge logged, reason code: E_SPCIRCUM</td>
<td align="right">0.00</td>
<td align="right">397.30</td>
</tr>
<tr class="labelbox" align="center" valign="middle">
<td>19/02/2019 11:02:46</td>
<td>bspvxs</td>
<td>RHOLD</td>
<td>NFDP</td>
<td align="left" style="width:250px;">Release hold</td>
<td align="right">0.00</td>
<td align="right">397.30</td>
</tr>
<tr class="labelbox" align="center" valign="middle">
<td>19/02/2019 11:02:05</td>
<td>bspvxs</td>
<td>HOLD</td>
<td>NFDP</td>
<td align="left" style="width:250px;">Hold info modified - CORROHOLD - Upto Mar 5 2019 </td>
<td align="right">0.00</td>
<td align="right">397.30</td>
</tr>
<tr class="labelbox" align="center" valign="middle">
<td>18/02/2019 17:40:07</td>
<td>CivicaUser</td>
<td>NEWT</td>
<td>NFDP</td>
<td align="left" style="width:250px;">Created task with Id: TF04563335 - Task type: Enforcement Review - Letter</td>
<td align="right">0.00</td>
<td align="right">397.30</td>
</tr>
<tr class="labelbox" align="center" valign="middle">
<td>18/02/2019 16:56:02</td>
<td>CivicaUser</td>
<td>HOLD</td>
<td>NFDP</td>
<td align="left" style="width:250px;">Hold all actions - CORROHOLD - Upto Mar 4 2019 </td>
<td align="right">0.00</td>
<td align="right">397.30</td>
</tr>
</tbody>
</table>

您可以使用以下选择器'#dgNoticeAudit tbody tr'选择所有tr,然后从那里开始提取单元格。然后,您可以使用.filterString.includes来过滤包含您所描述单词的数据。

let rows = document.querySelectorAll('#dgNoticeAudit tbody tr');
var data = Array.prototype.map.call(rows, tr => {
let td = tr.cells[4]; // index 4 for the 5th column
return td.innerHTML || td.innerText || '';
});
console.log(data);
/* result will be = [
"An externally printed NFD document has been imported.",
"Note inserted",
"Cancelled task with Id: TF04563335 - Task type: Enforcement Review - Letter↵",
"Closed task with Id: TF04563335 - Task type: Enforcement Review - Letter↵",
"Closed task with Id: TF04562943 - Task type: Enforcement Review Applications↵",
"Challenge logged, reason code: E_SPCIRCUM",
"Release hold",
"Hold info modified - CORROHOLD - Upto Mar 5 2019 ",
"Created task with Id: TF04563335 - Task type: Enforcement Review - Letter↵",
"Hold all actions - CORROHOLD - Upto Mar 4 2019 "
]; */
const words = 'Closed task'; // Your searching words
let filteredData = data.filter(sentence => sentence.includes(words));
console.log(filteredData);
/*result will be = [
"Closed task with Id: TF04563335 - Task type: Enforcement Review - Letter↵",
"Closed task with Id: TF04562943 - Task type: Enforcement Review Applications↵",
]*/

相关内容

最新更新