【发布时间】:2020-06-06 18:55:26
【问题描述】:
我正在尝试创建一个 Chrome 扩展程序,该扩展程序将从表中提取一些数据。我想将 TR 的 TD 转换为简单的行,每列由管道 | 字符分隔,例如:
01/01/2020 | XX | 57,43 | |
02/01/2020 | YY | 11,22 | |
这是其中的一部分:
<table width="100%" border="0" cellpadding="2" cellspacing="0">
<tbody>
<tr>
<td class="TRNbarratabelac" width="3%">
<input type="checkbox" name="chkTodos" id="chkTodos" onclick="selTodos(this)" style="background:transparent;border:0px;"></td>
<td class="TRNbarratabelac">Data do <br>pagamento</td>
<td class="TRNbarratabelac">Tipo</td>
<td class="TRNbarratabelac">Favorecido/beneficiário</td>
<td class="TRNbarratabelac">Valor (R$)</td>
<td class="TRNbarratabelac">Informações complementares</td>
<td class="TRNbarratabelac" colspan="2" width="20%">Opções</td>
</tr>
<tr>
<td class="TRNlicbe"><input type="checkbox" name="chkSel" id="chkSel" value="1" onclick="verSelTodos(this)" style="background:transparent;border:0px;"></td>
<td class="TRNlicbe">21/02/2020 </td>
<td class="TRNliebe">Concessionárias</td>
<td class="TRNliebe"> </td>
<td class="TRNlidbe">57,43 </td>
<td class="TRNlicbe"> </td>
<td class="TRNlicbde" width="8%"><a href="javascript:detalharIndividual('1')" class="lnkpadrao01">Visualizar</a></td>
<td class="TRNlicbde" width="12%"><span><a href="javascript:email('1')" class="lnkpadrao01">enviar por email</a></span> </td>
</tr>
</tbody>
</table>
为了对其进行迭代,我使用这样的 XPath:
function DOMtoString(doc) {
let path_tr = '(//div[@class="contborda"])[4]/table[3]/tbody/tr[position()>1]';
var tr = doc.evaluate(path_tr, doc, null, XPathResult.ANY_TYPE, null);
let alertText = '';
let x = tr.iterateNext();
while (x) {
alertText += x.textContent;
x = tr.iterateNext();
}
return alertText;
}
在这里我得到了表格(忽略第一个带有列名的 TR),但结果是这样的(只是其中的一部分):
<br> <br> 21/02/2020 <br> Concessionárias<br> <br> 57,43 <br> <br> Visualizar<br> enviar por email <br><br>
我看到 XPath 正在为其添加 BR。
我尝试循环遍历这些 TR 的 TD,但没有成功:
let path_td = '//td';
var td = tr.evaluate(path_td, tr, null, XPathResult.ANY_TYPE, null);
我可以通过 TD 进行交互并在没有 BR 的情况下获取它们的原始文本的正确方法是什么?
【问题讨论】:
-
为什么选择使用 XPath 而不是
Document.querySelector()? -
@ChristosLytras 好问题...我没有表格 ID 或任何可以找到表格的 CSS 类...或者有什么办法吗?从未使用过 QuerySelector
-
它比 XPath 更容易。我会使用选择器给你写一个答案,然后你告诉我你的想法。
标签: javascript html dom xpath google-chrome-extension