Tyler Duren: Position abfragen

Wie kann ich die Position abfragen, ohne das Element absolut zu positioniern.

CODE:

<div align="center">
<table width="800" height="100%" border="0" cellspacing="0" cellpadding="0" valign="top">
 <tr>
  <td align="center" valign="top">
   Inhalt
  </td>
  <td id="position">
   Hier die Position bestimmen!
  </td>
 </tr>
</table>
</div>

Das hier funktioniert leider nicht:
 <script language="JavaScript" type="text/javascript">
  function getXY(id) {
   var x = document.getElementById(id).style.left,
    y = document.getElementById(id).style.left;
   alert ("top: " + x + "\nleft: " + y);
   }
 </script>

THX

  1. <div align="center">
    <table width="800" height="100%" border="0" cellspacing="0" cellpadding="0" valign="top">
     <tr>
      <td align="center" valign="top">
       Inhalt
      </td>
      <td id="position">
       Hier die Position bestimmen!
      </td>
     </tr>
    </table>
    </div>

    Furchtbarer Code. Tablelayout mit div's vermischt inkl. fixe Breite. du solltest dich mal mit CSS befassen.

    Das hier funktioniert leider nicht:

    funktioniert nicht, ist keine Fehlerbeschreibung, bzw. deutet irgendwie darauf hin, dass du nichts versucht hast um rauszufinden wie es geht.

    <script language="JavaScript" type="text/javascript">
      function getXY(id) {
       var x = document.getElementById(id).style.left,
        y = document.getElementById(id).style.left;
       alert ("top: " + x + "\nleft: " + y);

    oh hast du doch ;-)
    du kriegst hier?

    ich vermute mal undefined.

    Die Position bekommst du je nach Browser so:

    var obj = document.getElementById(id);
    var pos = {left:0, top:0};

    if(typeof obj.offsetLeft != 'undefined')
    {
       while (obj)
       {
           pos.left += obj.offsetLeft;
           pos.top += obj.offsetTop;
           obj = obj.offsetParent;
       }
    }
    else
    {
       pos.left = obj.left ;
       pos.top = obj.top ;
    }
    return pos;

    Struppi.

    1. Den <div> machte ich nur herum um zu zeigen, dass die Tabelle nicht am linken Rand positioniert ist (ist in Wirklichkeit nicht so :-) und man es doch mit position:absolute machen könnte.

      Aber THX!
      Gruß Marcus

  2. Hi,

    Wie kann ich die Position abfragen, ohne das Element absolut zu positioniern.

    Nur der alte NC kann das mit ref.left/top. Ansonsten musst Du durch alle parent-offsets loopen. Beispiel findest Du auf http://www.wendenburg.net, sieh Dir mal "findPos" naeher an.

    Gruesse,
    Joachim