我想回到所有的href的的锚如果标签跨度相同的行中包含特定的文本,但我不知道该怎么写XPath表达式。下面的代码是我所能得到的,它会返回给我span的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')]
3 回答
慕莱坞森
TA贡献1810条经验 获得超4个赞
尝试以下任一方法xpath
以<a>
根据span
文本查找标签。
//span[contains(.,'apple')]/parent::td/preceding-sibling::td/a
或者
//table//tr//td//span[contains(.,'apple')]/ancestor::td/preceding-sibling::td/a
或者
//table//tr//td//span[contains(.,'apple')]/parent::td/parent::tr/td/a
演示 1:
使用或条件更新 xpath
//span[contains(.,'apple') or contains(.,'banana') ]/parent::td/preceding-sibling::td/a
慕尼黑8549860
TA贡献1818条经验 获得超11个赞
你可以用不同的方法剥同一个苹果。但是,在这种情况下,我会坚持以下几点。
试试这个:
"//tr[.//span[contains(.,'apple')]]//a/@href"
添加回答
举报
0/150
提交
取消