首页 > 解决方案 > 如何使用 Xpath 从嵌套表中获取行数?

问题描述

我有下面的嵌套表,我想将第二个 tbody 中的行数存储在一个变量中。

主表的 Xpath 和第二个表 tbody 的 Xpath 是:

//*[@id="MainTable"]/table

//*[@id='MainTable']/table/tbody/tr/td/table[2]/tbody   

使用下面的代码在 Chrome 控制台中进行测试,到目前为止,我已经成功地获得了第二个 tbody。

function getElementByXpath(path) {
  return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
}
console.log( getElementByXpath("//*[@id='MainTable']/table/tbody/tr/td/table[2]/tbody") );

但是我被困在如何获取第二个 tbody 的行数上。

有人可以帮助实现此目标的行数或更好的方法吗?谢谢你的帮助。

这是 HTML 结构:

    <table>
        <tbody>
            <tr>
                <td id = "main">
                    <table id = "table_x">...</table>
                    <div>...</div>
                    <iframe>...<iframe>
                    <table class="table2_class" summary="MySummary">
                        <thead>...</thead>
                        <tbody>
                            <tr class="a1" >
                                <td class="td_class">1</td>
                                <td class="td_class">N</td>
                                <td class="td_class_1">
                                    <div dir="" class="zzz">
                                        <div class="div_class">
                                            <a href="...">Some text</a>
                                        </div>
                                    </div>
                                </td>
                            </tr>
                            <tr class="b1" >
                                <td class="td_class">4</td>
                                <td class="td_class">W</td>
                                <td class="td_class_1">
                                    <div dir="" class="zzz">
                                        <div class="div_class">
                                            <a href="...">Some text</a>
                                        </div>
                                    </div>
                                </td>
                            </tr>   
                            <tr class="a1" >
                                <td class="td_class">7</td>
                                <td class="td_class">R</td>
                                <td class="td_class_1">
                                    <div dir="" class="zzz">
                                        <div class="div_class">
                                            <a href="...">Some text</a>
                                        </div>
                                    </div>
                                </td>
                            </tr>       
                    </tbody>
                </table>
                </td>
            </tr>
        </tbody>            
    </table>

标签: javascripthtml-table

解决方案


回答我自己的问题。

这段代码似乎有效:

getElementByXpath("//*[@id='MainTable']/table/tbody/tr/td/table[2]/tbody").rows.length

推荐阅读