steckl: Rahmenbreite eines Elements

Hi,

gibt es eine Moeglichkeit mit JS die Breite eines HTML-Elements abzueglich der Breite des Rahmens (border) zu bekommen?
Das einzige was ich gefunden habe ist offsetWidth, das gibt mir aber die Breite des Elements mit Rahmen Aus.

Beispiel:
CSS:

  #TXT {  
        width: 150px;  
        border: 1px solid black;  
  }

HTML:
<input id="TXT" type="Text" name="anzeige">

Jetzt moechte ich irgendwie auf die 150 kommen.
mit .style.width bekomme ich einen Leerstring und mit .offsetWidth 152.

Das oben beschriebene Verhalten tritt im FF1.5 und bei Doctype strict auf.

mfG,
steckl

  1. Hello out there!

    mit .style.width bekomme ich einen Leerstring

    Weil du das nicht mit JavaScript gesetzt hast.

    if (window.getComputedStyle)  
      alert(window.getComputedStyle(document.getElementById("TXT", "").getPropertyValue("width"));
    

    See ya up the road,
    Gunnar

    --
    „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
    1. Hello out there!

      IEs, die getComputedStyle nicht kennen, kennen dafür currentStyle:

      var TXT = document.getElementById("TXT");  
      if (window.getComputedStyle)  
        alert(window.getComputedStyle(TXT, "").getPropertyValue("width"));  
      else if (TXT.currentStyle)  
        alert(TXT.currentStyle.width);
      

      [</archiv/2007/3/t147909/#m959320>]

      See ya up the road,
      Gunnar

      --
      „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
      1. danke, funktioniert wie gewuenscht :-)

        Ich werde jetzt damit noch etwas rumexperimentieren und mich gegebenenfalls nochmal melden.

        mfG,
        steckl

        1. Hallo steckl

          habe noch das dazu hier im Forum gefunden:
          http://www.robertnyman.com/2006/04/24/get-the-rendered-style-of-an-element/

          Hätte den auch schon früher gemailt, bin aber Wahnsinnig geworden bei den Versuch das im IE anzuwenden auf ein Objekt was ich geclont hatte aber noch nicht wieder im DOM hatte.

          So vergehen Stunden.

          Liebe Grüße

          Bernd

          1. Hi,

            habe noch das dazu hier im Forum gefunden:
            http://www.robertnyman.com/2006/04/24/get-the-rendered-style-of-an-element/

            Danke, die Funktion dort ist recht praktisch, auch wenn es etwas gedauert hat, bis ich ueberrissen habe, was

            strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){  
                return p1.toUpperCase();  
               });
            

            macht.
            Jetzt weiss ich, dass es nur - (Bindestrich) loescht und aus dem Nachfolgendem Zeichen einen Grossbuchstaben macht :-)

            mfG,
            steckl

  2. Hallo steckl,

    was hälst Du von der Möglichkeit die Breite mit .offsetWidth auszulesen und dann davon 2 zu subtrahieren? Das sollte mit JavaScript doch kein Problem sein oder?

    mfg goldie

    1. Hello out there!

      was hälst Du von der Möglichkeit die Breite mit .offsetWidth auszulesen und dann davon 2 zu subtrahieren?

      Aus welcher Luft greifst du die 2?

      See ya up the road,
      Gunnar

      --
      „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)