ProXy: Tabelle mit seltsamen Verhalten

Guten Tag,

ich lasse mittels Java-Script eine Tabelle erzeugen. Dieser gebe ich eine Breite und füge eine Zeile mit einer Zelle hinzu. Wenn ich nun den Hintergrund der Zelle setze, so sehe ich, dass diese nicht 100% Breite einnimmt, sondern nur die Breite des Inhalts.

Hier mal der Code mit dem die Tabelle erstellt wird:

var table = document.createElement("table");
table.id = "dates["+i+"]";
table.className = "dates";
table.style.display = "none";
var row;
var cell;
row = table.insertRow(0);
cell = row.insertCell(0);
cell.style.backgroundColor = "#FFCC80";
cell.innerHTML = "keine Termine";

Die Tabelle wird nachträglich per MouseOver eingeblendet...

Selbst wenn ich dem TR und dem TD-Tag eine Breite von 100% gebe, bleibt die Zelle so klein wie der darin befindliche Inhalt.

Weiss jemand, wo hier der Fehler liegen könnte?

  1. Hi,

    Die Tabelle wird nachträglich per MouseOver eingeblendet...

    nämlich wie? Ist das Problem identisch, wenn sie nicht vorher ausgeblendet wurde?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Die Tabelle wird nachträglich per MouseOver eingeblendet...

      nämlich wie? Ist das Problem identisch, wenn sie nicht vorher ausgeblendet wurde?

      Hallo Cheatah,

      deine Vermutung ist korrekt, wenn ich die Tabelle nicht ausblende, dann wird sie richtig dargestellt. Sobald ich sie mit

      document.getElementById("dates["+index+"]").style.display = 'block';

      sichtbar mache, wird sie "falsch", selbst wenn sie vorher richtig angezeigt wird.

      1. Hi,

        deine Vermutung ist korrekt, wenn ich die Tabelle nicht ausblende, dann wird sie richtig dargestellt. Sobald ich sie mit

        document.getElementById("dates["+index+"]").style.display = 'block';

        sichtbar mache, wird sie "falsch", selbst wenn sie vorher richtig angezeigt wird.

        Versuchs mal mit
        document.getElementById("dates["+index+"]").style.display = '';

        Ich weiss nicht, ob das auch bei nachtraeglich generierten Elementen klappt, aber normalerweise sollte so das default-Display des jeweiligen Browsers fuer das Element gesetzt werden.

        Es gibt auch noch einen eigenen Wert von display fuer Tabellen, aber damit kann der IE nicht umgehen.

        mfG,
        steckl

        1. Hallo steckl,

          Versuchs mal mit
          document.getElementById("dates["+index+"]").style.display = '';

          Das ist die Lösung, so macht es - zumindest der Firefox - richtig. Hatte 'block' auch schon mit 'inline' getauscht, auf ein '' bin ich nicht gekommen. Danke für die Hilfe!

          mfG,
          steckl

          MfG,
          ProXy

          1. Hi,

            Versuchs mal mit
            document.getElementById("dates["+index+"]").style.display = '';

            Das ist die Lösung, so macht es - zumindest der Firefox - richtig. Hatte 'block' auch schon mit 'inline' getauscht, auf ein '' bin ich nicht gekommen.

            Der IE6 sollte es auch richtig machen. In anderen Browsern (ausser dem FF) hab ichs noch nicht getestet.
            Ich bin da nur mal durch Zufall drauf gekommen und war auch ziemlich erstaunt.

            Ob dieses Verhalten auch standardkonform ist weiss ich nicht, aber ich hab mir gedacht hauptsache es klappt (und dann sogar noch im IE :-)

            mfG,
            steckl