Steffen Zörner: Ändern von <DIV> per JS

Hallo,

ich verwende im Quelltext ein <div id="help" style="position:absolute; visibility: hidden"></div>, in welches ich dann eventgesteuert Werte über

var content = '<table id="helptable"><tr><td>' + msg + '</td></tr></table>';
document.getElementById("help").innerHTML = content;
document.getElementById("help").style.display='block';

eintrage und sichtbar mache. Wenn ich nun versuche, die aktuelle Breite des Fensters zu bestimmen:

alert(document.getElementById('helptable').width);

dann bekommen ich nix. Setze ich document.getElementById('helptable').width zuvor ist alles OK und ich bekomme ein Ergebnis angezeigt und die Tabelle wird auch auf diese Seite gesetzt.

Wie kommen ich an die Breite des Fenster / Tabelle? Ich brauche den Wert um zu entscheiden, wo ich das Fenster einblende oder bei Bedarf noch verändere.

Danke, Steffen

  1. alert(document.getElementById('helptable').width);

    Bitte benutze die API anstelle von Pfandhasy-Syntax. Du kannst über das Style-Objekt daraud zugreifen (wenn die Eigenschaft vorher definiert wurde), oder per offsetWidth etc.

  2. FsmE,

    document.getElementById("help").innerHTML = content;

    Igittigitt!

    In sensibus mistis,
    HaThoV

    --
    Besuchen Sie http://www.4html.de, wenn Sie an einer
    Neuen Generation von Web-Publishing mitarbeiten wollen.
    1. document.getElementById("help").innerHTML = content;

      Igittigitt!

      Was soll das? Schon mal Performance-Messungen gemacht?

      1. FsmE,

        document.getElementById("help").innerHTML = content;

        Igittigitt!

        Was soll das? Schon mal Performance-Messungen gemacht?

        Nein. Ich weiß auch das das schneller geht - aber nur im IE, wo 'innerHTML' ein festeingebautes Element ist und global funktioniert. Mozilla braucht länger, offenbar weil damit eine DOM-Umleitungsfunktion angesprochen wird. Außerdem erlaubt Mozilla die Verwendung nur bedingt, andere Brauser überhaupt nicht. Mit korrektem DOM bist Du auf der sicheren Seite, und viel langsamer ist es auch nicht, in etwa so zu schreiben:

        TAB = new Array('td','tr','tbody','table')
        with (document) {
         MSG = createTextNode('Das hier soll drinstehn')
         for (o=0;o<TAB.length;o++) {
          TMP = createElement(TAB[o])
          MSG = TMP.appendChild(MSG)
         }
         getElementById('help').appendChild(MSG)
        }

        Wenn Du bei Dir einen Perfotest machen kannst: Mach mal!  <img src="http://progress.democraticunderground.com/images/arcadefreak.gif" border="0" alt="">

        In sensibus mistis,
        HaThoV

        --
        Besuchen Sie http://www.4html.de, wenn Sie an einer
        Neuen Generation von Web-Publishing mitarbeiten wollen.