Maik: dynamisch formulare per javascript erzeugen

hallo

ich erzeuge innerhalb eines formulars ein input feld welches ich später x beliebig ansprechen möchte:

var ifeld = document.createElement("input");
        ifeld.type = 'text';
        ifeld.value= '';
        ifeld.name = 'vname['+counter+']';
        ifeld.size = 20;
        ifeld.maxlength = 50;

spreche ich das feld z.b. so an passiert leider nichts :-( keine fehler od.ä
document.myform['vname[0]'] = 'text';

wie kann ich das lösen?

gruß Maik

  1. Tag Maik.

    ich erzeuge innerhalb eines formulars ein input feld welches ich später x beliebig ansprechen möchte: [...] spreche ich das feld z.b. so an passiert leider nichts :-( keine fehler od.ä: document.myform['vname[0]'] = 'text';

    http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines, Beispiel 3

    Siechfred

    1. Hallo

      link:http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines], Beispiel 3

      ok, document.myform['vname[0]'].value = 'text';
      der IE meldet: kein objekt oder null, firefox kapiert das.

      gruß Maik

    2. Tag Maik.

      http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines, Beispiel 3

      hallo, das versteht kein browser, was mach ich falsch?
      <script language="JavaScript">
      function test(elem) {
               var fx = document.getElementById(elem);
               for(i=0;i<3;i++) {

      var aElem = document.createElement("input");
                       aElem.name = 'checkup['+ i +']';
                       aElem.value='Num'+ i;
                       fx.appendChild(aElem);

      bElem = document.createElement("a");
                       bElem.innerHTML = 'click: '+ i;
                       bElem.href = 'javascript:;';
                       bElem.id = 'id'+i;
                       bElem.onclick = function() {
                                        document.myform.elements["checkup["+ this.id.substr(2)+"]"].value = this.id;
                                      }
                      fx.appendChild(bElem);
               }
      }
      //-->
      </script>

      <form action="#" method="post" target="_self" name="myform">
      <div id="mask">
      </div>
      </form>
      <a href="javascript:;" onClick="test('mask');">add form elements</a>

      gruß Maik

      1. Tag Maik.

        http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines, Beispiel 3
        hallo, das versteht kein browser, was mach ich falsch?

        Was sagt die JS-Konsole, was der DOM-Inspector?

        Siechfred

        1. Tag Maik.

          Was sagt die JS-Konsole, was der DOM-Inspector?

          Firefox: document.myform.elements["checkup[" + i + "]"] has no properties
          IE: kein objekt oder null

          Siechfred

          und nu?

          Gruß Maik

      2. hallo, das versteht kein browser, was mach ich falsch?

        Firefox schon, aber der IE hat damit Probleme, warum konnte ich jetzt auch nicht rausfinden. Das Element läßt sich nicht über elements[name] ansprechen (über den Index schon, die Elemente sind ale vorhanden).

        <script language="JavaScript">

        language ist veraltet type ist notwendig.

        <script type="text/javascript">

        und es gibt einen Workaround:

        function test(elem) {
                 var fx = document.getElementById(elem);
                 for(i=0;i<3;i++) {

        var aElem = document.createElement("input");
                         aElem.name = 'checkup['+ i +']';
                         aElem.value='Num'+ i;
                         fx.appendChild(aElem);

        bElem = document.createElement("a");

        bElem.fElem = aElem;

        bElem.innerHTML = 'click: '+ i;
                         bElem.href = '#';
                         bElem.id = 'id'+i;
                         bElem.onclick = function() {
                                          document.myform.elements["checkup["+ this.id.substr(2)+"]"].value = this.id;

        stattdessen dann:

        this.fElem.value = this.id;
                                           return false;

        }
                        fx.appendChild(bElem);
                 }
        }
        //-->
        </script>

        Struppi.