我在我的XHTML页面中有两个浮动项。不幸的是,当我试图获得最右边项目的偏移量时...如果元素不是浮动的,它返回的位置是元素的位置。
<div id="Left style="float:right"></div>
<div id="right" style="float:right"></div>
Using Jquery
<script type="text/javascript">
var right = $("#right");
alert(right[0].offsetLeft);
</script>我一定要做这样的事情吗?
function findPos(obj) {
var curleft = curtop = 0;
if (obj.offsetParent)
{
do
{
curleft += obj.offsetLeft;
curtop += obj.offsetTop;
} while (obj = obj.offsetParent);
}
}发布于 2010-06-10 07:38:09
看起来您正在尝试查找页面位置。
所以,是的,您将使用如下函数:
function aGetElementsPagePosition (zElement)
{
var iLeftOffset = zElement.offsetLeft;
var iTopOffset = zElement.offsetTop;
while (zElement = zElement.offsetParent)
{
iLeftOffset += zElement.offsetLeft;
iTopOffset += zElement.offsetTop;
}
return [iLeftOffset, iTopOffset];
}发布于 2010-06-10 07:47:06
最终做了这样的事情:
function findPos(obj) {
var pos = new Object();
pos.x = pos.y = 0;
if (obj.offsetParent)
{
do
{
pos.x += obj.offsetLeft;
pos.y += obj.offsetTop;
} while (obj = obj.offsetParent);
}
return pos;
} 发布于 2013-10-03 03:14:12
以跨浏览器的方式获取元素在页面中的位置的方法如下:
var tempEl;
var myElement = document.getElementById('#someId');
//cool guys
x = myElement.offsetLeft;
y = myElement.offsetTop;
//IE 7-
if (myElement.hasLayout
&& myElement.offsetParent
&& myElement.offsetParent != document.body
) {
x = 0;
y = 0;
tempEl = myElement;
while (tempEl.parentNode) {
if (tempEl.currentStyle.hasLayout) {//very important for floated elements
x += (tempEl.offsetLeft) ? tempEl.offsetLeft : 0;
y += (tempEl.offsetTop) ? tempEl.offsetTop : 0;
}
if (tempEl == document.body) {
break;
}
tempEl = tempEl.parentNode;
}
}https://stackoverflow.com/questions/3010619
复制相似问题