Linuchs: Absolutwert style.top eines Vorschlagsfeldes bestimmen

Beitrag lesen

problematische Seite

Moin,

ich habe mehrere input-Felder für die GEMA-Meldung von Liedern.

Nach Eingabe von mindestens 3 Zeichen sollen Titel vorgeschlagen werden. Dazu ist ein vorhandenes und zu body absolut positioniertes Vorschlagsfeld unter das jeweilge input-Feld zu positionieren und zu öffnen. Der Inhalt kommt später.

Die Position dieses Vorschlagsfeldes ermittle ich, in dem die Links- und Oben-Werte des input und seiner parents aufsummiert werden.

Bei left funktioniert das auch, aber bei top nicht. Wieso meldet ein td, dass er 53px oben-Abstand hat zu seinem tr und der oberste tr auch 53px zu tbody? Habe das per console.log dokumentiert:

  var obj_vorschlaege = document.getElementById( "vorschlaege" );
  function getLieder( obj ) {
    
    // vorschlagsfeld positionieren und oeffnen
    if ( obj.value.length == 3 ) {
      var div   = obj;
      var left  = div.offsetLeft; // im parent-Element
      var top   = div.offsetTop;  // im parent-Element
      while ( div.tagName != "BODY" ) {
        console.log( div.tagName +" left=[" +div.offsetLeft +"] top=[" +div.offsetTop +"]" );
        div    =  div.parentElement;
        left  +=  div.offsetLeft;
        top   +=  div.offsetTop;
      }
      console.log( "left=[" +left +"]" );
      console.log( "top =[" +top  +"]" );
      obj_vorschlaege.style.left      = left            +"px";
      obj_vorschlaege.style.minWidth  = obj.offsetWidth +"px";
      obj_vorschlaege.style.top       = top             +"px";
      obj_vorschlaege.style.display   = "block";
    }
...

Gruß, Linuchs