GVKun编程网logo

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

25

对于如何使用Javascript计算元素的XPath位置?感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解javascript计算,并且为您提供关于JavascriptHTML:如何获取元素

对于如何使用Javascript计算元素的XPath位置?感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解javascript 计算,并且为您提供关于Javascript HTML:如何获取元素相对于其父元素的位置?、javascript – jQuery元素的xPath、javascript – 使用JS更改svg元素的位置、javascript – 使用相同的类jquery计算元素的数量的宝贵知识。

本文目录一览:

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

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

假设我有一个带有不同种类标记的大型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元素。

只是为了澄清,“单击”事件处理程序不是问题。我可以做的。我只是不确定如何计算元素在DOM树中的位置并将其表示为XPath。

PS任何使用或不使用JQuery库的答案,我们都应感谢。

PPS我对XPath完全陌生,因此在上面的示例中我甚至可能犯了一个错误,但是您会明白的。

答案1

小编典典

Firebug可以做到这一点,它是开源BSD的,因此您可以重复使用它们的实现,而无需任何库。

第三方

这是上面链接源的摘录。以防万一上面的链接会改变。请检查源以从更改和更新或提供的完整功能集中受益。

Xpath.getElementXPath = function(element){    if (element && element.id)        return ''//*[@id="'' + element.id + ''"]'';    else        return Xpath.getElementTreeXPath(element);};

上面的代码调用此函数。注意,我添加了一些换行符以避免水平滚动条

Xpath.getElementTreeXPath = function(element){    var paths = [];  // Use nodeName (instead of localName)     // so namespace prefix is included (if any).    for (; element && element.nodeType == Node.ELEMENT_NODE;            element = element.parentNode)    {        var index = 0;        var hasFollowingSiblings = false;        for (var sibling = element.previousSibling; sibling;               sibling = sibling.previousSibling)        {            // Ignore document type declaration.            if (sibling.nodeType == Node.DOCUMENT_TYPE_NODE)                continue;            if (sibling.nodeName == element.nodeName)                ++index;        }        for (var sibling = element.nextSibling;             sibling && !hasFollowingSiblings;            sibling = sibling.nextSibling)        {            if (sibling.nodeName == element.nodeName)                hasFollowingSiblings = true;        }        var tagName = (element.prefix ? element.prefix + ":" : "")                           + element.localName;        var pathIndex = (index || hasFollowingSiblings ? "["                    + (index + 1) + "]" : "");        paths.splice(0, 0, tagName + pathIndex);    }    return paths.length ? "/" + paths.join("/") : null;};

Javascript HTML:如何获取元素相对于其父元素的位置?

Javascript HTML:如何获取元素相对于其父元素的位置?

如何解决Javascript HTML:如何获取元素相对于其父元素的位置??

如何获取元素相对于其父元素的位置(左侧和顶部)?

注意:父 position 既不是 relative 也不是 absolute,所以 offsetLeft & offsetTop 不起作用。

父/子可能有边距/边框/填充。

只有 Vanilla JS,没有 jquery。

解决方法

您可以使用 .getBoundingClientRect() 返回元素相对于视口的位置。因此,您可以使用 .getBoundingClientRect() 获取元素和父元素的位置,并从中计算元素相对于父元素的位置。看看下面的答案。

Element''s coordinates relative to its parent

,

您可以通过 window.getComputedStyle 和 vanilla js 选择器获取样式。

function getStyleProp(elem,prop){
    if(window.getComputedStyle)
        return window.getComputedStyle(elem,null).getPropertyValue(prop);
    else if(elem.currentStyle) return elem.currentStyle[prop]; //IE
}


elem = document.getElementById("id")
console.log(getStyleProp(elem,"top"))
console.log(getStyleProp(elem,"left"))

由 Rob W 编写的原始函数

源代码:Read CSS property of an element using JavaScript

javascript – jQuery元素的xPath

javascript – jQuery元素的xPath

给定一个jQuery元素,我如何获得它的XPath.
我有一个XPath函数(不知何故,当我传递jQuery元素时它不起作用).

请查看这个jsfiddle http://jsfiddle.net/xAtx5/

解决方法:

尝试使用var a = document.getElementById(‘something’);代替.

http://jsfiddle.net/pPd4b/ – 它的工作原理.

PS.或者你可以用于一般情况:

var a = $('#something').get(0);

javascript – 使用JS更改svg元素的位置

javascript – 使用JS更改svg元素的位置

试图制作一个按下按钮时移动的svg矩形.现在我只想通过函数修改x.

function modX()
{
  document.getElementById("rectangle").transform = 'translate(295 115)';
}
var x = 20;
var y = 20;
modX();
stroke-width:3;stroke:rgb(0,0)">

我对代码很新,所以请避免使用css或jquery.

最佳答案
您可以使用javaScript document.getElementById(“rectangle”)更改其x .setAttribute(‘x’,X_value)
将X_value设置为您希望它更改的值.

javascript – 使用相同的类jquery计算元素的数量

javascript – 使用相同的类jquery计算元素的数量

我有一个ul元素.现在我想知道有多少李选择了班级.

<ulhttps://www.jb51.cc/tag/rating/" target="_blank">rating" id="star-rating">

        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
</ul>


var Vote_selected = $('#star-rating ... ???').length;

它必须返回1.

解决方法

试试这个 :-

var Vote_selected = $('#star-rating li[]').length;

DEMO

或者(因为li是#star-rating的直接后代,你可以使用>).

var Vote_selected = $('#star-rating > li[]').length;

要么

var Vote_selected = $('#star-rating > .selected').length;

今天关于如何使用Javascript计算元素的XPath位置?javascript 计算的讲解已经结束,谢谢您的阅读,如果想了解更多关于Javascript HTML:如何获取元素相对于其父元素的位置?、javascript – jQuery元素的xPath、javascript – 使用JS更改svg元素的位置、javascript – 使用相同的类jquery计算元素的数量的相关知识,请在本站搜索。

本文标签: