我有以下表格数据要在 HTML 中遍历:
<table id="publicationTable" cellpadding="2" cellspacing="0">
<tr>
<td vAlign="top"><IMG SRC="/images/icons/general/spacer.gif" width="20" height="1"></td>
<td class="SmallColHeading">Published </td>
<td class="ColRow">Publisher, place and date of publication</td>
</tr>
<tr>
<td vAlign="top"><IMG SRC="/images/icons/general/spacer.gif" width="20" height="1"></td>
<td class="SmallColHeading">
Format </td>
<td class="ColRow">
vii, 201 pages ; 23 cm. </td>
</tr>
我想输出文本“vii,201页;23.cm。”与 document.evaluate 但我错过了一些东西。问题是选择器应该是类属性值“SmallColHeading”的 td,并且具有(包含)Format 的文本节点/值。
var Pagination = document.evaluate("//td[contains(., 'Format')]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null );
var Pagination2 = Pagination.nextSibling.innerHTML;
if (Pagination.singleNodeValue) {
var Pages = Pagination.singleNodeValue.textContent;
}
alert(Pagination2);
alert(Pages);
我正在尝试各种组合,特别是在 nextSibling 之后,例如删除innerHTML(我变得未定义)或将其替换为textContent(我得到无法读取属性“textContent”)。我正在努力通过 JavaScript 在这个 HTML 上遍历 nextSibling,因为 tr 甚至没有 id 值,而这就是我们在系统中拥有的所有内容。提前致谢!
最佳答案
我能够通过以下代码实现结果:
var Pages = document.evaluate("//td[contains(., 'Format')]/following-sibling::td",
document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null );
if (Pages.singleNodeValue) {
var pages = Pages.singleNodeValue.textContent;
}
我应该在“//td[contains(., 'Format')]/”之后遍历,添加“following-sibling::td”,而不是添加这样的变量:“var Pagination2 = Pagination .nextSibling.innerHTML;”此帖How to select following sibling/xml tag using xpath给了我提示以及我查看的初始链接:Javascript .querySelector find <div> by innerTEXT这是:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_using_XPath_in_JavaScript
关于javascript - 通过document.evaluate获取nextsibling的文本值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55913814/