Man kan ju bestämma positionen på ett objekt genom att skriva:
document.all.objekt.style.left=värde;
men hur gör man för att få fram positionen på ett objekt? När jag försöker läsa av document.all.objekt.style.left returneras ingenting.
Ett litet problem med offsetLeft är att den ger positionen relativ till offsetParent och du är inte garanterad att alla webbläsare tolkar vad som är offsetParent på samma sätt. För att vara på den säkra sidan får du göra ngt i stil med det här:
// obj får du genom obj = document.getElementById("obj_id");
function getXPos(obj)
{
var xPos = 0;
if (obj.offsetParent)
{
while (obj.offsetParent)
{
xPos += obj.offsetLeft
obj = obj.offsetParent;
}
}
else if (obj.x)
xPos += obj.x;
return xPos;
}
function getYPos(obj)
{
var yPos = 0;
if (obj.offsetParent)
{
while (obj.offsetParent)
{
yPos += obj.offsetTop
obj = obj.offsetParent;
}
}
else if (obj.y)
yPos += obj.y;
return yPos;
}
:) Det är inte specifikt för just offsetLeft. Se detta exempel;
<div style="position:absolute;top:10px;left:10px;width:100px;height:100px;border:solid blue 1px;">10x10</div>
<p> </p>
<div style="position:relative;">
<div style="position:absolute;top:10px;left:10px;width:100px;height:100px;border:solid blue 1px;">10x10</div>
</div>
... left-attributet (jmfr. style.left)är 10px på båda de absolut-positionerade lagren, men eftersom det ena är ett "barn" till ett element med position:relative hamnar de på olika ställen. Så detta måste man alltid ta hänsyn till.
Jag hade läst någonstans något i stil med att om man har en länk i en <p> så räknar opera <p> som parent medan mozilla inte gör det. Men nu när jag testade själv så räknade inte opera heller <p> som parent. Så antingen minns jag fel eller också gäller det äldre opera än min.