如何使用Javascript计算元素的XPath位置?

假设我有一个包含不同类型标签的大型HTML文件,类似于您现在正在查看的StackOverflow。


现在让我们说你单击页面上的一个元素,Javascript函数会是什么样的,它会计算引用该特定元素的最基本的XPath?


我知道在XPath中有一种无限的方式来引用该元素,但我正在寻找一些只关注DOM树的东西,而不考虑ID,类等。


例:


<html>

<head><title>Fruit</title></head>

<body>

<ol>

  <li>Bananas</li>

  <li>Apples</li>

  <li>Strawberries</li>

</ol>

</body>

</html>

假设您点击苹果。Javascript函数将返回以下内容:


/html/body/ol/li[2]

它基本上只是向上运行DOM树一直到HTML元素。


只是为了澄清,'on-click'事件处理程序不是问题。我能做到这一点。我只是不确定如何计算元素在DOM树中的位置并将其表示为XPath。


PS赞赏使用或不使用JQuery库的任何答案。


PPS我对XPath完全不熟悉,所以我甚至可能在上面的例子中犯了一个错误,但你会明白这个想法。


海绵宝宝撒
浏览 618回答 3
3回答

米脂

我用来获取类似于你的情况的XPath的函数,它使用jQuery:function getXPath( element ){&nbsp; &nbsp; var xpath = '';&nbsp; &nbsp; for ( ; element && element.nodeType == 1; element = element.parentNode )&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; var id = $(element.parentNode).children(element.tagName).index(element) + 1;&nbsp; &nbsp; &nbsp; &nbsp; id > 1 ? (id = '[' + id + ']') : (id = '');&nbsp; &nbsp; &nbsp; &nbsp; xpath = '/' + element.tagName.toLowerCase() + id + xpath;&nbsp; &nbsp; }&nbsp; &nbsp; return xpath;}
打开App,查看更多内容
随时随地看视频慕课网APP