Sascha321: Dynamisch namen zuweisen

Hallo

Wie kann ich einem Textfeld das dynamisch erstellt wurde einen namen zuweisen?
<input type="TEXT" name="was kommt hier rein" value="">
der name der Textfelder muss ja auch dynamisch erstellt werden hat da einer einen link oder eine Idee.

Danke

  1. Hallo Sascha321,

    interessant wäre, wie das dynamisch:
    <input type="TEXT" name="was kommt hier rein" value="">
    zustande kommt.

    Wenn Du es mittels createElement erstellt oder Dir Zugriff über getElement(s)By... "verschafft" hast, dann hast Du ein Objekt, dem Du das Namen-Attribut noch geben kannst:
    obj.name = "Was auch immer";

    Mit freundlichem Gruß
    Micha

    --
    LeagueEditor JavaScript :: simple Ligaverwaltung auf der Basis von JavaScript
    1. Hallo derletztekick,

      interessant wäre, wie das dynamisch:
      <input type="TEXT" name="was kommt hier rein" value="">

      so: https://forum.selfhtml.org/?t=128902&m=833040 ff

      Gruß, Jürgen

      1. Hallo JürgenB,

        so: https://forum.selfhtml.org/?t=128902&m=833040 ff

        Danke, da war ich wohl nicht weitsichtig genug ;)

        Mit freundlichem Gruß
        Micha

        --
        LeagueEditor JavaScript :: simple Ligaverwaltung auf der Basis von JavaScript
        1. Hallo

          das ist also der Code nun weiß ich leider nicht wie ich den dynamisch erstellten Textfelder die Werte abfragen soll.Die ich dan später in einer Datenbank speichern möchte.

          <html>
          <head>

          <script type="text/javascript">

          var breite = new Array("6","16","10","5","5","5","5","5","5");
              var anzahl = new Array("8","16","11","7","7","7","7","7","7");
              var buendig =new Array("ltr","ltr","ltr","rtl","rtl","rtl","rtl","rtl","rtl");
            function addRowToTable()
            {
                 var tbl = document.getElementById('Tabelle');
                 var lastRow = tbl.rows.length;
                 var iteration = lastRow;
                 var row = tbl.insertRow();
                 var cell1 = row.insertCell();
                 cell1.className = "cell02g";
                 var newText = document.createElement("input");
                 newText.setAttribute("type","text");
                 newText.setAttribute("size","1");
                 newText.setAttribute("align","center");
                 newText.setAttribute("value",iteration);
                 newText.maxLength = 2;
                 cell1.appendChild(newText);

          for(i=0;i<breite.length;i++)
               {
                 var cell1 = row.insertCell();
                 cell1.className = "cell02g";
                 var newText = document.createElement("input");
                 newText.setAttribute("type","text");
                 newText.setAttribute("size",breite[i]);
                 newText.setAttribute("dir",buendig[i]);
                 newText.maxLength = anzahl[i];
                 cell1.appendChild(newText);
               }
            }
          </script>
          </head>
            <title></title>
            <link href="style.css" rel="stylesheet" type="text/css" media="all" />
            <body >
          <table width="800" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="#666666">
            <tr>
              <td width="80"></td>
              <td style="background-image:url(images/test.jpg)" align="left" height="70" valign="top" ><img src="images/head.gif" alt="" width="295" height="45"></td>
              <td width="80"></td>
            </tr>
            <tr>
              <td height="40"></td>
            </tr>
          </table>
          <table width="650" border="0" align="center">
              <tr class="cell02g">
                <td class="style4" width="20">Kunde:</td>
                <td><input size="35"></td>
                <td class="style4">Zeichnungsnummer</td>
                <td><input size="20"> </td>
              </tr>
              <tr class="cell02g">
                <td class="style4">Bezeichnung:</td>
                <td><input size="35"> </td>
                <td class="style4">Protokollnummer</td>
                <td><input size="20"> </td>
              </tr>
              <tr class="cell02g">
                <td class="style4">Teilenummer:</td>
                <td><input size="20"> </td>
                <td class="style4">Progr.:</td>
                <td><input size="20"> </td>
              </tr>
          </table>
          <hr width="900" align="center">
          <table id="Tabelle" width="650" cellpadding="2" border="0" align="center">
             <tr class="style4">
              <td width="30" align="center">Pos</td>
              <td width="60" align="center">Merkmal</td>
              <td width="120" align="left">Elementname</td>
              <td width="100" align="left">Referenz</td>
              <td width="55" align="right">Soll</td>
              <td width="50" align="right">ob.Tol</td>
              <td width="50" align="right">unt.Tol</td>
              <td width="55" align="right">Istwert</td>
              <td width="50" align="right">Abw.</td>
              <td width="55" align="right">&Uuml;bSchr.</td>
             </tr>
             <tr class="cell02g">
              <td width="30"><input type="TEXT" name="pos" size="1" value="1" maxlength="2"></td>
              <td width="30"><input type="TEXT" name="merkmal" size="6" maxlength="8"></td>
              <td width="120"><input type="TEXT" name="elementname" size="16" maxlength="16"></td>
              <td width="100"><input type="TEXT" name="referenz" size="10" maxlength="11"></td>
              <td width="55"><input type="TEXT" name="soll" size="5" maxlength="7" dir="rtl"></td>
              <td width="50"><input type="TEXT" name="obtol" size="5" maxlength="7" dir="rtl"></td>
              <td width="50"><input type="TEXT" name="unttol" size="5" maxlength="7" dir="rtl"></td>
              <td width="55"><input type="TEXT" name="istwert" size="5" maxlength="7" dir="rtl"></td>
              <td width="50"><input type="TEXT" name="abw" size="5" maxlength="7" dir="rtl"></td>
              <td width="55"><input type="TEXT" name="ueberschr" size="5" maxlength="7" dir="rtl"></td>
             </tr>
          </table>
          <table width="705" border="0" align="center">
             <tr>
              <td align="right">
               <form name="Formular" action="">
                  <input type="button" value=" + " onclick="addRowToTable()"><br>
               </form>
              </td>
             </tr>
          </table>
          </body>
          </html>

          1. Hallo Sascha321,

              
                   var cell1 = row.insertCell();  
                   cell1.className = "cell02g";  
                   var newText = document.createElement("input");  
                   newText.setAttribute("type","text");  
            
            

            Schau einmal, hier hast Du dem Objekt newText die Eigenschaft Type und den Wert text gegeben - für den InternetExplorer ist es afaik besser, wenn Du es mit

            newText.type = text;

            machst. Darüber bekommt das Objekt cell1 etwas ähnliches und zwar mit der Klasse. Kannst Du nicht erkennen, wie es bei NAME gehen soll?

            Mit freundlichem Gruß
            Micha

            --
            LeagueEditor JavaScript :: simple Ligaverwaltung auf der Basis von JavaScript
            1. Hallo Micha,

              doch beim name mache ich einfach  newText.name = "derWert";

              aber wie mache ich das, das die Inputfelder zusätzlich zum Namen noch den Paramenter von der Variable "iteration" bekommen.

              Das erste Inputfeld heisst "derWert", das das zweite Inputfeld in der gleichen Zeile heisst "Test".
              So nun müsste ja wenn ich eine neue Zeile mache das erste Inputfeld "derWert1" und das zweite Inputfeld "Test1" heissen, aber wie mache ich das??

              1. Hallo Sascha321,

                du solltest wirklich mal mit den Grundlagen beschäftigen.
                Zu deinem Problem: mit dem "+"-Operator kannst du nicht nur rechnen, sondern auch Strings aneinanderhängen.

                text1="abc";
                text2="def";
                text1+text2 liefert dann "abcdef".

                Genauso kannst du auch Zahlen an Strings anhängen:

                var Basis = "derWert";
                for(var i=0;i<5;i++) {
                 name = Basis + i;
                 alert(name);
                }

                Gruß, Jürgen

                1. Hallo Jürgen,

                  das funktioniert so nicht:

                  <html>
                  <head>

                  <script type="text/javascript">

                  var breite = new Array("6","16","10","5","5","5","5","5","5");
                      var anzahl = new Array("8","16","11","7","7","7","7","7","7");
                      var buendig =new Array("ltr","ltr","ltr","rtl","rtl","rtl","rtl","rtl","rtl");
                      var basis =new Array("merkmal","elementname","referenz","soll","obtol","unttol","istwert","abw","ueberschr");
                    function addRowToTable()
                    {
                         var tbl = document.getElementById('Tabelle');
                         var lastRow = tbl.rows.length;
                         var iteration = lastRow;
                         var row = tbl.insertRow();
                         var cell1 = row.insertCell();
                         cell1.className = "cell02g";
                         var newText = document.createElement("input");
                         newText.type = "text";
                         newText.size = "1";
                         newText.align = "center";
                         newText.value = iteration;
                         newText.maxLength = 2;
                         newText.name = "pos"+iteration;
                         cell1.appendChild(newText);
                          alert(name);
                       for(i=0;i<breite.length;i++)
                       {
                         var cell1 = row.insertCell();
                         cell1.className = "cell02g";
                         var newText = document.createElement("input");
                         newText.type = "text";
                         newText.size = breite[i];
                         newText.dir = buendig[i];
                         newText.maxLength = anzahl[i];
                         cell1.appendChild(newText);
                       }
                    }
                  </script>
                  </head>
                    <title></title>
                    <link href="style.css" rel="stylesheet" type="text/css" media="all" />
                    <body >
                  <table width="800" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="#666666">
                    <tr>
                      <td width="80"></td>
                      <td style="background-image:url(images/test.jpg)" align="left" height="70" valign="top" ><img src="images/head.gif" alt="" width="295" height="45"></td>
                      <td width="80"></td>
                    </tr>
                    <tr>
                      <td height="40"></td>
                    </tr>
                  </table>
                  <table width="650" border="0" align="center">
                      <tr class="cell02g">
                        <td class="style4" width="20">Kunde:</td>
                        <td><input size="35"></td>
                        <td class="style4">Zeichnungsnummer</td>
                        <td><input size="20"> </td>
                      </tr>
                      <tr class="cell02g">
                        <td class="style4">Bezeichnung:</td>
                        <td><input size="35"> </td>
                        <td class="style4">Protokollnummer</td>
                        <td><input size="20"> </td>
                      </tr>
                      <tr class="cell02g">
                        <td class="style4">Teilenummer:</td>
                        <td><input size="20"> </td>
                        <td class="style4">Progr.:</td>
                        <td><input size="20"> </td>
                      </tr>
                  </table>
                  <hr width="900" align="center">
                  <table id="Tabelle" width="650" cellpadding="2" border="0" align="center">
                     <tr class="style4">
                      <td width="30" align="center">Pos</td>
                      <td width="60" align="center">Merkmal</td>
                      <td width="120" align="left">Elementname</td>
                      <td width="100" align="left">Referenz</td>
                      <td width="55" align="right">Soll</td>
                      <td width="50" align="right">ob.Tol</td>
                      <td width="50" align="right">unt.Tol</td>
                      <td width="55" align="right">Istwert</td>
                      <td width="50" align="right">Abw.</td>
                      <td width="55" align="right">&Uuml;bSchr.</td>
                     </tr>
                     <tr class="cell02g">
                      <td width="30"><input type="TEXT" name="pos" size="1" value="1" maxlength="2"></td>
                      <td width="30"><input type="TEXT" name="merkmal" size="6" maxlength="8"></td>
                      <td width="120"><input type="TEXT" name="elementname" size="16" maxlength="16"></td>
                      <td width="100"><input type="TEXT" name="referenz" size="10" maxlength="11"></td>
                      <td width="55"><input type="TEXT" name="soll" size="5" maxlength="7" dir="rtl"></td>
                      <td width="50"><input type="TEXT" name="obtol" size="5" maxlength="7" dir="rtl"></td>
                      <td width="50"><input type="TEXT" name="unttol" size="5" maxlength="7" dir="rtl"></td>
                      <td width="55"><input type="TEXT" name="istwert" size="5" maxlength="7" dir="rtl"></td>
                      <td width="50"><input type="TEXT" name="abw" size="5" maxlength="7" dir="rtl"></td>
                      <td width="55"><input type="TEXT" name="ueberschr" size="5" maxlength="7" dir="rtl"></td>
                     </tr>
                  </table>
                  <table width="705" border="0" align="center">
                     <tr>
                      <td align="right">
                       <form name="Formular" action="">
                          <input type="button" value=" + " onclick="addRowToTable()"><br>
                       </form>
                      </td>
                     </tr>
                  </table>
                  </body>
                  </html>

                  1. Sorry ich trottel, jetzt habe ich es, suppi
                    Danke für die hilfe
                    naja nun gehts weiter nun muss ich nur noch sehen wie ich die Werte in eine Variable oder so bekomme das ich es dann in eine DB eintragen kann.

                    Ist das Script vom Aufbau her richtig??
                    Oder kann man dort noch einiges vereinfachen??

                    Danke

                    1. Hallo Sascha321,

                      Sorry ich trottel, jetzt habe ich es, suppi
                      Danke für die hilfe

                      du hast also gemerkt, dass die Variable im alert nicht existiert.

                      Ist das Script vom Aufbau her richtig??

                      Nein. Im IE geht es, aber im FF nicht. Die Methoden insertRow und insertCell benötigen einen Parameter, der bestimmt, wo "insertet" werden soll. Wenn du insertRow(-1) und insertCell(-1) schreibst, wird immer am Ende angehängt.

                      Ich sage es noch einmal: Wenn du in der Programmierung Erfolg haben willst, musst du auch irgendwann mal die Handbücher lesen. Vor allem wenn dir die Links zur Doku gezeigt werden (http://forum.de.selfhtml.org/archiv/2006/5/t128902/#m833118).

                      Gruß, Jürgen

                      1. Hallo Jürgen,

                        Naja ich weiss wohl das ich irgendwie das Value dem Namen des Inputfeldes zuordnen muss.
                        Du sagst das so einfach aber wie schon bei Ashura gesagt, ist es für euch logisch was es für einen anfänger noch lange nicht ist.
                        Ich finde es einfach schade das da nicht kurz so wie bei dem anderem mal ein Beispiel gemacht wird.

                        Trotzdem Danke

                        Ihr Profis versteht einfach nicht das man mit einem kleinen simplen Beispiel als Anfänger mehr geholfen ist als wenn einem ein 20 Seiten DIN A4 Script vor die Füsse geschmissen wird.

                        Gruss Sascha

                        1. Hallo Sascha321,

                          Naja ich weiss wohl das ich irgendwie das Value dem Namen des Inputfeldes zuordnen muss.

                          ???

                          Ihr Profis versteht einfach nicht das man mit einem kleinen simplen Beispiel als Anfänger mehr geholfen ist als wenn einem ein 20 Seiten DIN A4 Script vor die Füsse geschmissen wird.

                          Aber das Lesezeichen war schon an der richtigen Stelle.

                          Du hast ja Beispiele bekommen. Aber du kannst sie nicht einfach übernehmen, ohne darüber nachzudenken. Außerdem hat nicht jeder ein Beispiel in der Schublade, das genau dein Problem löst.

                          Du musst schon bei allen Methoden, die du einsetzt, wissen, was sie tun und wie sie eingesetzt werden müssen. Wenn dir jemand etwas dickes rotes Rundes in die Hand drückt, hältst du ja auch nicht das Feuerzeug dran, nur weil es vieleicht eine Kerze sein könnte, sondern du schaust genau hin, liest was drauf steht und merkst dann sofort, dass es ein Chinaböller ist.

                          Den Fehler mit dem fehlenden Parameter hast du allerdings nicht bemerkt, da du wahrscheinlich mit dem IE testest. Das ist nicht gut. Der FF hat eine ordentliche Javascript-Konsole, die allerdings nicht defaultmäßig installiert wird. Man muss, glaube ich, die Developer Tools mitinstallieren. Außerdem kann man sich über "Markieren -> rechte Maustaste -> Auswahl-Quelltext anzeigen" auch dynamisch erzeugtes HTML anzeigen lassen. So habe ich z.B. auf deiner Seite gesehen, das das Name-Attribut gesetzt war.

                          Gruß, Jürgen

                          1. Hallo Jürgen,

                            das heißt das man zum Coden den FF nehmen sollte? ok werde den mal installieren.

                            Wieso hast Du das gemacht?

                            Naja ich weiss wohl das ich irgendwie das Value dem Namen des Inputfeldes zuordnen muss.

                            ???

                            Warum die Fragezeichen?

                            Gruß Sascha

                            1. Hallo Sascha321,

                              das heißt das man zum Coden den FF nehmen sollte? ok werde den mal installieren.

                              das ist gut so.

                              Wieso hast Du das gemacht?

                              Was?

                              Naja ich weiss wohl das ich irgendwie das Value dem Namen des Inputfeldes zuordnen muss.

                              ???

                              Warum die Fragezeichen?

                              Weil ich den Sinn des Satzes "Naja ich weiss ..." an dieser Stelle nicht verstanden habe. Oder war das eine Frage?

                              Gruß, Jürgen

                              1. Hallo Jürgen,

                                ich habe mir die Developer Tools für den FF auch runtergeladen.
                                Doch leider funktioniert das nicht mit den Dynamischen erzeugtem HTML anzeigen lassen.
                                Was ich wohl machen kann ist in der Menüleiste auf
                                Forms -> Display Form Details,
                                dann sieht man auch die Namen und was alles dem Element zugeordnet ist aber im Quelltext kann ich die Dynamisch erstellten Zeilen leider nicht lesen.
                                Gibts da noch eine Extra Einstellung?

                                Gruss Sascha

                                1. Hallo Sascha321,

                                  um den Quelltext des dynamisch erstellten Teils der Seite zu sehen, musst du diesen Teil mit der Maus markieren, und dann im Kontextmenü (rechte Maustaste) den Punkt "Auswahl-Quelltext anzeigen" wählen.

                                  Gruß, Jürgen

                                  1. Hallo JürgenB,

                                    (rechte Maustaste) den Punkt "Auswahl-Quelltext anzeigen" wählen.

                                    Fantastisch, das habe ich schon immer gesucht und habe es mit einer Textarea bisher immer überbrückt *rofl*

                                    Danke!

                                    Mit freundlichem Gruß
                                    Micha

                                    --
                                    LeagueEditor JavaScript :: simple Ligaverwaltung auf der Basis von JavaScript
                                    1. Hallo Jürgen,

                                      komisch bei mir klappt das leider nur so wie ich es beschrieben habe.

                                      Ich kann die Dynamisch erstellten Zeilen garnicht markieren, wahrscheinlich irgendeine Einstellung.
                                      Finde Sie leider nicht.

                                      1. Hallo sascha321,

                                        markiere mal einen größeren Bereich, also vom Text über der Tabelle bis zum Knopf mit dem "+". Oder markiere mit <strg>+a einfach alles. Dann müsste es gehen.

                                        Gruß, Jürgen

                                        1. Hallo Jürgen,

                                          Habe den FF mal auf einem anderen PC installiert, da geht es so wie Du es sagst, da zeigt er mir eine lange Zeile an wo alles drin steht.
                                          Komisch auf dem anderem PC geht das so nicht seltsam.

                                          Gruss Sascha

  2. Hi,

    Wie kann ich einem Textfeld das dynamisch erstellt wurde einen namen zuweisen?

    Per Dom?
    inp      = document.createElement("input");
    inp.name = "NAME";

    Gruesse, Joachim

    --
    Am Ende wird alles gut.