Clemens: Dynamischer Table: Wieso funktioniert das mit IE 6.0 nicht?

Hallo Community

Ich versuche einen Table dynamisch zu generieren und versuche auch Attribute zu uebergeben. Folgendes Codesegment funktioniert einwandfrei mit FFox

mytable = document.createElement("table");
var attr = document.createAttribute("style");
attr.nodeValue = "table-layout:fixed";
mytable.setAttributeNode(attr);

Wenn ich es jedoch mit IE 6.0 probiere bekomme ich in der letzten Zeile die Fehlermeldung:

Error: member not found

Wie kann ich Attribute uebergeben, die von IE und FFox erkennt werden>

Danke Gruss
Clemens

  1. hi,

    var attr = document.createAttribute("style");
    attr.nodeValue = "table-layout:fixed";
    mytable.setAttributeNode(attr);

    Wenn ich es jedoch mit IE 6.0 probiere bekomme ich in der letzten Zeile die Fehlermeldung:

    Error: member not found

    setAttribute ist im IE oftmals problematisch.
    idR. dann, wenn er noch eine "direkte" möglichkeit kennt, auf das entsprechende attribut zuzugreifen.

    probier's doch mal über das style-objekt.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hi wahsaga

      probier's doch mal über das style-objekt.

      Danke fuer Deine Antwort werde das probieren. Nur wie mache ich das dann wenn ich eine Funktion bei z.b. onblur realisieren will? kann ich da auch irgendwie das setattribute umgehen?

      Viele Gruesse
      C

      1. hi,

        Nur wie mache ich das dann wenn ich eine Funktion bei z.b. onblur realisieren will? kann ich da auch irgendwie das setattribute umgehen?

        http://forum.de.selfhtml.org/archiv/2005/5/t107039/#m664740

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. hi,

          http://forum.de.selfhtml.org/archiv/2005/5/t107039/#m664740

          Danke aber irgendwie schein ich zu bloed zu sein. Kann ich damit nicht nur HTML Element aber keine Attribute erzuegen? Weiters sagt es auf selfhtml das setAttribute und Create Arribute aber Version 6.0 im IE implementiert sein sollte ? Haut bei mir aber wie gesagt doch nicht ganz hin!

          Gruss
          Clemens

          1. Danke aber irgendwie schein ich zu bloed zu sein. Kann ich damit nicht nur HTML Element aber keine Attribute erzuegen? Weiters sagt es auf selfhtml das setAttribute und Create Arribute aber Version 6.0 im IE implementiert sein sollte ? Haut bei mir aber wie gesagt doch nicht ganz hin!

            wie gesagt du brauchst es nicht und da du ein bereits vorhandenes Attribut erzeugen willst solltest du darauf verzichten.

            Im Prinzip machst du folgendes:

            var style = new Object();

            [HTML Table].style = style;

            d.h. du willst ein style Objekt mit einem anderen Überschreiben das kann und darf nicht gehen, da jedes HTML Element ein style Objekt braucht.

            Schau dir mal an was ein Attr Objekt ist:

            var a = document.createAttribute('test');
            alert( debugObj(a));

            und im Gegensatz dazu das style Element:
            a = document.createElement('table');
            alert( debugObj(a.style));

            function debugObj(obj)
            {
                var NL = '\n';
                var str = "Debug Objekt: " + obj + NL;
                    var tab = "\t";
                for(var i in obj)
                {
                    var t = typeof obj[i];

            var attr = obj[i];
                    var text = tab + i + '(' + t + ')';
                    if(t == 'function') text += "*";
                    else text += " ="  + attr;
                    if(!t || !attr || !text) continue;
                    str += NL + text;
                }
                return str;
            }

            Struppi.

  2. Ich versuche einen Table dynamisch zu generieren und versuche auch Attribute zu uebergeben. Folgendes Codesegment funktioniert einwandfrei mit FFox

    Eiegntlich seltsam, denn

    mytable = document.createElement("table");

    Du erzeugst eine Tabelle

    var attr = document.createAttribute("style");

    aber eine Tabelle hat doch bereits die Eigenschaft style

    attr.nodeValue = "table-layout:fixed";
    mytable.setAttributeNode(attr);

    und hier müßte eine Fehlermeldung kommen, dass du ein bereits vorhandenes (und sehr wichitges dazu) Attribut überschreiben willst.

    Wie kann ich Attribute uebergeben, die von IE und FFox erkennt werden>

    obj.attribut = 'xyz';
    erzeugt ganz von alleine ein neues Attribut in allen Browsern die Object() kennen (also alle ab spätesten Netscape 2)

    Und für den Event gibt es auch eine Vielzahl von Möglichkeiten, wobie ich am liebsten die Variante verwende:

    obj.onblur = function()
    {
    ....
    };

    Struppi.

    1. hi,

      Und für den Event gibt es auch eine Vielzahl von Möglichkeiten, wobie ich am liebsten die Variante verwende:

      obj.onblur = function()
      {
      ....
      };

      erzeugt die eigentlich, mal angenommen man würde mehrere objekte in einer schleife abhandeln o.ä., bei jedem mal eine neue funktion, auch wenn es sich jedes mal um den selbe code handelt?

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
      1. Und für den Event gibt es auch eine Vielzahl von Möglichkeiten, wobie ich am liebsten die Variante verwende:

        obj.onblur = function()
        {
        ....
        };

        erzeugt die eigentlich, mal angenommen man würde mehrere objekte in einer schleife abhandeln o.ä., bei jedem mal eine neue funktion, auch wenn es sich jedes mal um den selbe code handelt?

        Ich vermute ja (wobei ich mir auch vorstellen kann das es nicht so ist, aber JS in Bezug auf Speicherverbrauch zu optimieren ist eh für die Katz, das bisschen Code ist im Verhältnis zu dem was der Browser und dessen Objekte braucht sicher vernachlässigbar), aber in so einem Falle nehme ich dann natürlich
        obj.onblur = onblur_func;

        function onblur_func()
        {
        ....
        };

        Struppi.