flashnfantasy: dynamische Namen und innerHTML

Folgendes Problem...

In meinem Document lasse ich an eine Reihe von Datenfelder mit DOM eine INPUT-Feld anhängen. Alle kriegen einen eigenen Namen usw...

Läuft auch super.

Jetzt will ich dieses Teil in ein anderes Document importieren.
Mit importNode klappt das wunderbar (Opera+Mozilla).

Für den IE6 habe ich ein Workaround mit innerHTML. Das funktioniert bis auf die Namen, die werden nicht übernommen.

innerHTML erkennt den Namen, wenn das Element statisch erzeugt wurde, aber bei dynamischen Elementen Fehlanzeige.

Meine Namenszuweisung bisher

node.name = "irgendwas"

  1. Für den IE6 habe ich ein Workaround mit innerHTML. Das funktioniert bis auf die Namen, die werden nicht übernommen.

    Da du die relevanten Quelltextstellen nicht oder nur bruchstückhaft angibst, rate ich mal, dasses daran liegen könnte:

    "The NAME attribute cannot be set at run time on elements dynamically created with the createElement method. To create an element with a name attribute, include the attribute and value when using the createElement method." (Quelle)

    1. "The NAME attribute cannot be set at run time on elements dynamically created with the createElement method."

      Ja, ich denke, das sollte funktionieren.

      Woher kriegt man so ein Wissen ?

      1. Woher kriegt man so ein Wissen ?

        Mit der Zeit lernt man die diversen Quellen kennen. Unter anderem auch die angegebene, die sehr ausführlich ist, was Microsoft-Produkte angeht.
        Ziemlich viel (alles?), was anderenorts als "geheimes Wissen" gehandelt wird, kann man im MSDN nachlesen.

    2. Hi,

      Quelle)

      ich bin nicht sicher ob IE das mit innerHTML ueberhaupt kann. Mein kleiner Test:
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
              "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
      <html>
      <head>
      <script type="text/javascript">
      function start() {

      var inp      =   document.createElement("input");
             inp.name =  "test";
             inp.setAttribute("name","test");
             inp.id   =  "test";
         var body     =  document.getElementsByTagName("form")[0];
         body.appendChild(inp);
      }

      function changeName() {
          var nn =  document.getElementById('test').value;
          if (nn) document.getElementById('test').name =  nn;
      }
      </script>
      </head>
      <body onload="start()">
      <form></form>
      <a href="#" onclick="alert(document.getElementById('test').name);return false">Welchen Namen hat das Kind</a><br>
      <a href="#" onclick="changeName();return false">Umbenennen</a><br>
      <a href="#" onclick="alert(document.getElementsByTagName('body')[0].innerHTML);return false">innerHTML</a>
      </body>
      </html>

      Es zeigt sich, dass auch IE den Namen zur Verfuegung hat _und_ sogar aendern kann (neuen Namen ins input und "Umbenennen" klicken) - beim Auslesen des innerHTML versagt er allerdings, im Gegensatz zu Gecko. Die _ID_ hingegen liest IE mit aus, vielleicht laesst sich so ein Workaround bauen.

      Gruesse, Joachim

      --
      Am Ende wird alles gut.
      1. Es zeigt sich, dass auch IE den Namen zur Verfuegung hat _und_ sogar aendern kann (neuen Namen ins input und "Umbenennen" klicken) - beim Auslesen des innerHTML versagt er allerdings,

        Dieses Versagen beobachtete ich auch vor einiger Zeit. Und wenn ich mich recht erinnere wurde der Name auch beim Absenden des Formulars nicht wirksam. Ich glaube, dass wir damals noch IE 5.0/5.5 im Einsatz hatten. Der IE 6 berücksichtigt das nachträglich gesetzte name-Attribut beim Formular-Absenden.

        Mit createElement("<input type=text name=test>") gibt's den Namen auch im innerHTML, die händische Änderung wird jedoch dort auch nicht berücksichtigt, wohl aber beim Absenden.

        Vielleicht kann das noch mal jemand mit IE 5.0/5.5 nachstellen?

        1. Hi,

          Der IE 6 berücksichtigt das nachträglich gesetzte name-Attribut beim Formular-Absenden.

          immerhin ;-)

          Mit createElement("<input type=text name=test>") gibt's den Namen auch im innerHTML

          ich denke allerdings, dass man - anstelle createElement so ie-proprietaer umzubiegen - dann gleich die inputs mit innerHTML ins doc schreiben kann, dann sollte innerHTML das auch auslesen koennen.

          Vielleicht kann das noch mal jemand mit IE 5.0/5.5 nachstellen?

          Verhalten sich beim Testscript genauso wie IE6 (createElement("<input type=text name=test>") jetzt nicht getestet).

          Gruesse, Joachim

          --
          Am Ende wird alles gut.
    3. (Quelle)

      'tschuldigung. Copy'n'Paste-Fehler meinerseits. Ich wollte dieses hier verlinken:

      http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/name_2.asp