Markus Dillander: Problem mit Bild in dynamischen Table einzubinden

Hi

Ich generiere mir dynamisch eine Tabelle und moechte nun anstatt Text, ein Bild in ein Datenelement aufnehmen. Dies hab ich nun folgendermassen versucht:

var img = document.createElement("img");
img.setAttribute("src", "event_icon_info.bmp");
mycurrent_row.appendChild(img);

Mit FFox funktioniert dies, jedoch leider zeigt der IE nix an und scheint diese Einbindung komplett zu ignorieren. Keine Fehlermeldung, kein Warning

Eine Idee wie das mit allen Browsern hinhauen koennte?

Gruss
Markus

  1. Hallo,

    var img = document.createElement("img");
    img.setAttribute("src", "event_icon_info.bmp");
    mycurrent_row.appendChild(img);

    mycurrent_row ist hoffentlich das TD-Element? "row" klingt für mich immer nach <tr>, und wenn du das Bild ans tr dranhängst, kanns natürlich nicht gehen.

    Ansonsten: Meine Erfahrung ist, dass der IE grundsätzlich Ärger macht, wenn man Tabellenzellen im Nachhinein verändert.
    Evtl. kann man manchmal das Problem lösen, in dem man in die Tabellenzelle ein diuv packt, und dann in diesem Div etwas ändert.

    Allerdings: 100%tig klappt das auch nicht immer. Das Problem ist eben, dass viele Browser durcheinander kommen, wenn sie eine bereits gerenderte Tabelle nochmal in den Ausmaßen verändern müssen.
    Am besten also die Dynamischen Teile als einzelne Divs bauen, dann gibts am wenigsten Probleme in Zusammenhang mit DHTML (nach meiner Erfahrung).

    Viele Grüße,
    Jörg

    1. Hi

      mycurrent_row ist hoffentlich das TD-Element? "row" klingt für mich immer nach <tr>, und wenn du das Bild ans tr dranhängst, kanns natürlich nicht gehen.

      Ja danke da wars, habs an tr rangehaengt... Das heisst das ganze schaut bei mir nun so aus:

      var img = document.createElement("img");
      img.setAttribute("src", "event_icon_info.bmp");
      mycurrent_cell.appendChild(img);
      mycurrent_row.appendChild(mycurrent_cell);

      Nun durchlauf ich eine Schleife, das heisst in jeder Zeile sollte mir das selbe Bild eingefuegt werden. Witzigerweise wird das Bild jedoch nur in der ersten Zeile angezeigt! wenn ich anstatt dem Bild testweise Text nehme wird mir dieser wie gewuenscht in JEDER Zeile eingefuegt!
      Eine Idee an was das liegen koennte?

      Beste Gruesse
      Markus

      1. Eine Idee an was das liegen koennte?

        Schon erledigt, hab vergessen ein CSS zu entfernen ;)

        Gruss

      2. Hallo Markus Dillander,

        Nun durchlauf ich eine Schleife, das heisst in jeder Zeile sollte mir das selbe Bild eingefuegt werden. Witzigerweise wird das Bild jedoch nur in der ersten Zeile angezeigt! wenn ich anstatt dem Bild testweise Text nehme wird mir dieser wie gewuenscht in JEDER Zeile eingefuegt!
        Eine Idee an was das liegen koennte?

        steht in der Schleife nur das appendChild oder auch das createElement? Das Bild muss jedesmal neu erzeugt werden, durch createElemenet oder auch durch cloneNode.

        Gruß, Jürgen

    2. Hallo Jörg Peschke,

      Ansonsten: Meine Erfahrung ist, dass der IE grundsätzlich Ärger macht, wenn man Tabellenzellen im Nachhinein verändert.
      ...

      das kann ich nicht bestätigen. Ich habe eine Seite, bei der fast alle Tabellen zur Laufzeit erzeugt und mit Inhalt (Text und Formularelemente) gefüllt werden. Alle neueren Browser kommen damit klar.

      Ich hatte nur mal den Fall, das, nachdem ich Tabelleninhalte dynamisch verändert habe, im IE ein PRE-Bereich unter der Tabelle "zerschossen" wurde, aber die Tabelle selbst war ok.

      Gruß, Jürgen

  2. Hallo Markus Dillander,

    var img = document.createElement("img");
    img.setAttribute("src", "event_icon_info.bmp");
    mycurrent_row.appendChild(img);

    der IE soll bei setAttribute schon mal Probleme haben. Versuch doch mal

    img.src = ...

    Gruß, Jürgen

    PS: Du weißt, das es für das www geeignetere Bildformate gibt, als ausgerechnet bmp?