Mazze: offset lesen

Hallo zusammen. Ich krieg einfach nicht raus, wo mein Fehler liegt. Vielleicht kann mir ja hier jemand helfen...
Folgende einfache Datei soll mir die Koordinaten eines Hyperlinks anzeigen:

<html>
<head>
<script language="JavaScript">
<!--
var ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1
var ns6=document.getElementById&&!document.all
var ns4=document.layers

function test(obj){
   links = ie4? obj.offsetLeft : ns4? obj.x : ns6? obj.x : ""
   oben = ie4? obj.offsetTop : ns4? obj.y : ns6? obj.y : ""
 alert(links + "|" + oben)
}
//-->
</script>
</head>
<body>
<br><br><br><br>

<table><tr><td>
<a href="#" onMouseover="test(this)">TEST</a>
</td></tr></table>

</body>
</html>

Das Problem:
Im IE werden die Koordinaten nur richtig angezeigt, wenn der href "freisteht", d.h. nicht von einem anderen Onjekt umrahmt wird. Im obigen Fall wird leider einfach 1|1 ausgegeben, was ja noch nicht mal die Koordinaten der Tabelle sind.

Kan mir da jemand helfen?

  1. Hi,

    Hallo zusammen. Ich krieg einfach nicht raus, wo mein Fehler liegt. Vielleicht kann mir ja hier jemand helfen...

    Das Problem:
    Im IE werden die Koordinaten nur richtig angezeigt, wenn der href "freisteht", d.h. nicht von einem anderen Onjekt umrahmt wird. Im obigen Fall wird leider einfach 1|1 ausgegeben, was ja noch nicht mal die Koordinaten der Tabelle sind.

    Das sind die Koordinaten des links im Bezug auf die Tabelle:

    http://selfhtml.teamone.de/javascript/objekte/all.htm#offset_left

    Da besonder:
    "Speichert den Abstand eines Elementes zum linken Rand des in der Eigenschaft  offsetParent gespeicherten Offset-Elternelementes."

    Eine Möglichkeit wäre vielleicht, sich durch die ganzen Elternelemente hoch zu arbeiten und die Abstände jeweils addieren.
    Hocharbeiten: http://selfhtml.teamone.de/javascript/objekte/all.htm#offset_parent

    Z.B.:
    function test(obj){
    var Eltern=obj.offsetParent;
    links=obj.offsetLeft;
    oben=obj.offsetTop;
    while (Eltern) {
     links=links+Eltern.offsetLeft;
     oben=oben+Eltern.offsetTop;
     Eltern=Eltern.offsetParent;
    }
    alert(links + "|" + oben)
    }

    Im Test geht's bei mir so.

    Gruß,

    Ronny