簡體   English   中英

通過document.evaluate獲取nextsibling的文本值

[英]Get the text value of nextsibling through document.evaluate

我要在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厘米”。 與document.evaluate,但我缺少一些東西。 問題是選擇器應該以類屬性值“ SmallColHeading”的td命名,並且具有(包含)文本節點/格式值。

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')。 我正在努力通過HTML上的javascript遍歷nextSibling,因為tr甚至沒有id值,而這正是我們在系統中擁有的所有值。 提前致謝!

不需要XPath。 這可以使用.getElementsByClassName().nextElementSibling相當簡單地實現:

 var pagination = document.getElementsByClassName('SmallColHeading')[0]; var pagination2 = pagination.nextElementSibling; console.log(pagination2.innerHTML.trim()); 
 <table> <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> </table> 

.trim()可用於擺脫任何其他空白。

請注意, <IMG>將需要一個自動關閉標簽,並且您需要一個外部<table>元素。 如果不包含<table> ,則表內容將直接添加到<body> ,並且選擇器無效。

我可以通過以下代碼實現結果:

 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')] /”,而不是添加像這樣的變量:“ var / pagination2 = Pagination.nextSibling”。 innerHTML;“ 這篇文章如何使用xpath選擇以下同級/ xml標記為我提供了提示以及我研究過的初始鏈接: Javascript .querySelector通過innerTEXT查找<div>,並且: https : //developer.mozilla.org/zh-CN / docs / Web / JavaScript / Introduction_to_using_XPath_in_JavaScript

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM