Я хочу вернуть все href тегов anchor , если span в той же строке содержит определенный text , но я не уверен, как написать это выражение XPath.
Ниже приведен код, насколько это возможно, и он вернет мне span s innerHTML .
Jsfiddle: https://jsfiddle.net/m95wdg7f/
var fruitsArray = [];
var nodesSnapshot = document.evaluate("//body/table/tbody/tr[*]/td[*]/span[contains(.,'apple')]", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
for ( var i=0 ; i < nodesSnapshot.snapshotLength; i++ ) {
fruitsArray.push(nodesSnapshot.snapshotItem(i).innerHTML);
}
alert(fruitsArray);
<table>
<tr>
<td><a href="http://www.oranges.com">link</a></td>
<td></td>
<td><span>orange</span></td>
</tr>
<tr>
<td><a href="http://www.apples.com">link</a></td>
<td></td>
<td><span>apple</span></td>
</tr>
<tr>
<td><a href="http://www.bananas.com">link</a></td>
<td></td>
<td><span>banana</span></td>
</tr>
<tr>
<td><a href="http://www.apples.com">link</a></td>
<td></td>
<td><span>apple</span></td>
</tr>
</table>
На мой взгляд, решение должно выглядеть примерно так:
//body/table/tbody/tr[*]/td[*]/a//body/table/tbody/tr[*]/td[*]/span[contains(.,'apple')]