Sertl: Breite eines Divs auslesen

Hi,

ich brauche zur Berechnung von Koords die Breite und Höhe eines Divs(<div id="menu" class="menu">...</div>).

die left- und top-Koordinaten gibt er mir mit Hilfe meiner Testfunktion aus. Die Funktion wird beim mousemove-Ereignis des documents aufgerufen.

function koords_gibaus(){
   alert (document.getElementById("menu").style.left);
   alert (document.getElementById("menu").style.top);
   alert (document.getElementById("menu").style.width);
   alert (document.getElementById("menu").style.height);}

Woran liegt es, dass er mir left und top ausgibt; width und height aber nicht.

Alle 4 Eigenschaften wurden auch im <style>-Tag für ".menu" vordefiniert?

mfg

Andreas

  1. Hallo,

    ich glaub', dass es

    alert (document.getElementById("menu").style.width);
       alert (document.getElementById("menu").style.height);}

    nicht gibt...

    die weite könntest du mit

    • alert (document.getElementById("menu").style.right);
      (rechte Koordinate)

    • alert (document.getElementById("menu").style.bottom);
      (unterere Koordinate)

    die Weite könntest du mit (...).right-(...).left rauskriegen...
    die Höhe mit (...).bottom-(...).top...

    Ich hoffe das hilft dir weiter...

    Tschau

    1. Hi,

      das mit right und bottom hab ich auch schon probiert. Dabei gibt die Funktion auch nichts zurück.

      Die beiden Eigenschaften height und width gibt es. Ich weiß nur nicht, ob ich sie nur zum Festlegen hernehmen kann oder auch zum Auslesen.

      Bei SELFHTML steht, dass man damit die Höhe und die Breite eines Elements bestimmen kann. Von Auslesen der Werte wird nichts erwähnt. Was mich aber verwirrt ist, dass bei den Infos zu top und left, auch nur dabei steht, dass man diese Eigenschaften benutzen kann um den Startpunkt des Elements festzulegen. Es heißt aber nicht, dass man die Werte auch auslesen kann. Trotzdem funktioniert es.

      mfg

      Andreas

      1. Solange die Werte nur im style-tag oder im externen style-sheet definiert werden kann man sie nicht auslesen, wohl aber bei einer Definition mit inline-styles. Das ist aber nicht die Lösung.

        Man kommt aber mit:
        document.getElementById("wasauchimmer").offsetWidth;
        bzw. ...offsetHeight;

        an die Werte heran.
        im Mozilla funktioniert auch:

        document.defaultView.getComputedStyles

        MfG
        Klaus

  2. ich brauche zur Berechnung von Koords die Breite und Höhe eines Divs(<div id="menu" class="menu">...</div>).

    Aus miener Bibliothek:

    ////////////////////////////////////////////////////////////
    // getSize(id, win)
    function getSize(id, win)
    {
        var obj = id;
        if(typeof id == "string") obj = getById(id, win);
        if(!obj) return false;

    var size = {width:0, height:0};

    if(typeof document.layers != 'undefined')
        {
             size.width = obj.clip.width;
             size.height = obj.clip.height;
        }
        else if(obj.offsetWidth)
        {
             size.width = parseInt(obj.offsetWidth);
             size.height = parseInt(obj.offsetHeight);
        }
        return size;
    }

    getById() ist eine Funktion um die Referenz des Elementes zu holen. Wenn dir aktuelle Browser reichen kannst du sie mit document.getElementById ersetzen.

    Struppi.