قيم JavaScript العائمة والمواصلة
-
26-09-2019 - |
سؤال
لديّ عنصرين أطفو عليه في صفحة 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);
}
}
المحلول
يبدو أنك تحاول العثور على موضع الصفحة.
لذا نعم ، ستستخدم وظيفة مثل:
function aGetElementsPagePosition (zElement)
{
var iLeftOffset = zElement.offsetLeft;
var iTopOffset = zElement.offsetTop;
while (zElement = zElement.offsetParent)
{
iLeftOffset += zElement.offsetLeft;
iTopOffset += zElement.offsetTop;
}
return [iLeftOffset, iTopOffset];
}
نصائح أخرى
انتهى الأمر بفعل هذا:
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;
}
ما أقوم به للحصول على موضع عنصر في الصفحة ، بطريقة المتصفح المتقاطع هو:
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;
}
}
لا تنتمي إلى StackOverflow