Javascript XPath table loop td's

问题描述 投票:1回答:1

我正在尝试创建一个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&nbsp;</td>
            <td class="TRNliebe">Concessionárias</td>
            <td class="TRNliebe"> &nbsp;</td>
            <td class="TRNlidbe">57,43&nbsp;</td>
            <td class="TRNlicbe"> &nbsp;</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>&nbsp;</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&nbsp;<br>   Concessionárias<br>    &nbsp;<br>   57,43&nbsp;<br>    &nbsp;<br>   Visualizar<br>   enviar por email&nbsp;<br><br>   

我看到XPath在上面添加了BR。

我尝试遍历这些TR的TD,但没有这样的成功:

let path_td = '//td';
var td = tr.evaluate(path_td, tr, null, XPathResult.ANY_TYPE, null);

我可以在TD上进行交互并获得没有BR的原始文本的正确方法是什么?

我正在尝试创建一个Chrome扩展程序,该扩展程序将从表中提取一些数据。我想用单行将TR的TD转换为简单的行,每列用竖线分隔。字符,例如:01/01 / ...

javascript html dom xpath google-chrome-extension
1个回答
1
投票

使用innerText而不是textContent以避免换行。您可以使用Document.querySelector()代替XPath,这将使DOM操作更加容易。

© www.soinside.com 2019 - 2024. All rights reserved.