海綿寶寶撒
2019-09-20 15:16:50
假設(shè)我有一個(gè)包含不同類(lèi)型標(biāo)簽的大型HTML文件,類(lèi)似于您現(xiàn)在正在查看的StackOverflow。現(xiàn)在讓我們說(shuō)你單擊頁(yè)面上的一個(gè)元素,Javascript函數(shù)會(huì)是什么樣的,它會(huì)計(jì)算引用該特定元素的最基本的XPath?我知道在XPath中有一種無(wú)限的方式來(lái)引用該元素,但我正在尋找一些只關(guān)注DOM樹(shù)的東西,而不考慮ID,類(lèi)等。例:<html><head><title>Fruit</title></head><body><ol> <li>Bananas</li> <li>Apples</li> <li>Strawberries</li></ol></body></html>假設(shè)您點(diǎn)擊蘋(píng)果。Javascript函數(shù)將返回以下內(nèi)容:/html/body/ol/li[2]它基本上只是向上運(yùn)行DOM樹(shù)一直到HTML元素。只是為了澄清,'on-click'事件處理程序不是問(wèn)題。我能做到這一點(diǎn)。我只是不確定如何計(jì)算元素在DOM樹(shù)中的位置并將其表示為XPath。PS贊賞使用或不使用JQuery庫(kù)的任何答案。PPS我對(duì)XPath完全不熟悉,所以我甚至可能在上面的例子中犯了一個(gè)錯(cuò)誤,但你會(huì)明白這個(gè)想法。
3 回答

米脂
TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊
我用來(lái)獲取類(lèi)似于你的情況的XPath的函數(shù),它使用jQuery:
function getXPath( element )
{
var xpath = '';
for ( ; element && element.nodeType == 1; element = element.parentNode )
{
var id = $(element.parentNode).children(element.tagName).index(element) + 1;
id > 1 ? (id = '[' + id + ']') : (id = '');
xpath = '/' + element.tagName.toLowerCase() + id + xpath;
}
return xpath;
}
添加回答
舉報(bào)
0/150
提交
取消