对于如何使用Javascript计算元素的XPath位置?感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解javascript计算,并且为您提供关于JavascriptHTML:如何获取元素
对于如何使用Javascript计算元素的XPath位置?感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解javascript 计算,并且为您提供关于Javascript HTML:如何获取元素相对于其父元素的位置?、javascript – jQuery元素的xPath、javascript – 使用JS更改svg元素的位置、javascript – 使用相同的类jquery计算元素的数量的宝贵知识。
本文目录一览:- 如何使用Javascript计算元素的XPath位置?(javascript 计算)
- Javascript HTML:如何获取元素相对于其父元素的位置?
- javascript – jQuery元素的xPath
- javascript – 使用JS更改svg元素的位置
- javascript – 使用相同的类jquery计算元素的数量
如何使用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:如何获取元素相对于其父元素的位置??
如何获取元素相对于其父元素的位置(左侧和顶部)?
注意:父 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
给定一个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元素的位置
试图制作一个按下按钮时移动的svg矩形.现在我只想通过函数修改x.
function modX()
{
document.getElementById("rectangle").transform = 'translate(295 115)';
}
var x = 20;
var y = 20;
modX();
我对代码很新,所以请避免使用css或jquery.
最佳答案
您可以使用javaScript document.getElementById(“rectangle”)更改其x .setAttribute(‘x’,X_value)
将X_value设置为您希望它更改的值.
javascript – 使用相同的类jquery计算元素的数量
<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计算元素的数量的相关知识,请在本站搜索。
本文标签: