apfelsine: Werte aller Textboxen mit onClick ersetzen

Hallo, ich habe ein Javascript, das funktioniert aus unerfindlichen Gründen nicht. Eigentlich sollte der Wert einer bestimmten Textbox (Identifikationskarte, NameDesReisenden, Kartentyp)über dem jeweiligen Button ">Für alle übernehmen<" an alle korrespondierenden anderen Textboxen übertragen werden, aber wenn ich den Button drücke werden alle Textfelder statt dessen geleert.

Es ist bestimmt irgend was kleines. Aber ich komme nicht drauf. Ich bin für jeden Tipp dankbar.

<tr>
                        <td  class="verbindungssuche-label">Wählen Sie eine Identifikationskarte:</td>                        
                        <td class="verbindungssuche-box"><select id="Reisende_0__Kartentyp" name="Reisende[0].Kartentyp"><option value=""></option>
<option selected="selected" value="Personalausweis">Personalausweis</option>
<option value="Kreditkarte">Kreditkarte</option>
<option value="BahnCard">BahnCard</option>
<option value="ECKarte">EC Karte</option>
</select>
                            <span class="required">*</span>
                            </td><td>
                            <span class="field-validation-valid" data-valmsg-for="Reisende[0].Kartentyp" data-valmsg-replace="true"></span>
                        </td>                            
                    </tr>                       
                    <tr>
                        <td  class="verbindungssuche-label">Kartennummer (die letzten 4 Stellen):</td>                        
                        <td class="verbindungssuche-box"><input id="Reisende_0__Kartennummer" name="Reisende[0].Kartennummer" type="text" value="" />
                            <span class="required">*</span>
                            </td><td>
                            <span class="field-validation-valid" data-valmsg-for="Reisende[0].Kartennummer" data-valmsg-replace="true"></span>
                        </td>
                    </tr>  
                    <tr>
                        <td  class="verbindungssuche-label">Name des Reisenden:</td>                        
                        <td class="verbindungssuche-box"><input class="NameDesReisenden" id="Reisende_0__NameDesReisenden" name="Reisende[0].NameDesReisenden" type="text" value="" /> 
                            <span class="required">*</span>
                            </td><td>
                            <span class="field-validation-valid" data-valmsg-for="Reisende[0].NameDesReisenden" data-valmsg-replace="true"></span>
                        </td>
                    </tr>
                    <tr>
                        <td colspan ="3"><input data-val="true" data-val-number="Das Feld &quot;ProductVariantExtensionId&quot; muss eine Zahl sein." id="Reisende_0__ProductVariantExtensionId" name="Reisende[0].ProductVariantExtensionId" type="hidden" value="40139" /> 
                            </td>
                    </tr>
                    <tr><td colspan="3"><button onclick="setallValues(0,2)">Für alle übernehmen</button></td></tr>
                    <script>
                        function setallValues(id, cnt) {
                            var name = 'Reisende[' + id + '].NameDesReisenden';
                            var kname ='Reisende[' + id + '].Kartennummer';
                            var iname ='Reisende[' + id + '].Kartentyp';
                            var NameDesReisenden = document.getElementByName(name).Value;
                            var Kartennummer = document.getElementsByName(kname).Value;
                            var Identifikationskarte = document.getElementsByName(iname).Value;
                            for (i = 0; i < cnt; i++) {
                                document.getElementByName("Reisende[" + i + "].NameDesReisenden").Value = NameDesReisenden;
                                document.getElementByName("Reisende[" + i + "].Kartennummer").Value = Kartennummer;
                                document.getElementByName("Reisende[" + i + "].Kartentyp").Value = Identifikationskarte;
                            }
                        }
                    </script>
(...irgendwelcher anderer Code....)
<tr>
                        <td  class="verbindungssuche-label">Wählen Sie eine Identifikationskarte:</td>                        
                        <td class="verbindungssuche-box"><select id="Reisende_1__Kartentyp" name="Reisende[1].Kartentyp"><option value=""></option>
<option selected="selected" value="Personalausweis">Personalausweis</option>
<option value="Kreditkarte">Kreditkarte</option>
<option value="BahnCard">BahnCard</option>
<option value="ECKarte">EC Karte</option>
</select>
                            <span class="required">*</span>
                            </td><td>
                            <span class="field-validation-valid" data-valmsg-for="Reisende[1].Kartentyp" data-valmsg-replace="true"></span>
                        </td>                            
                    </tr>                       
                    <tr>
                        <td  class="verbindungssuche-label">Kartennummer (die letzten 4 Stellen):</td>                        
                        <td class="verbindungssuche-box"><input id="Reisende_1__Kartennummer" name="Reisende[1].Kartennummer" type="text" value="" />
                            <span class="required">*</span>
                            </td><td>
                            <span class="field-validation-valid" data-valmsg-for="Reisende[1].Kartennummer" data-valmsg-replace="true"></span>
                        </td>
                    </tr>  
                    <tr>
                        <td  class="verbindungssuche-label">Name des Reisenden:</td>                        
                        <td class="verbindungssuche-box"><input class="NameDesReisenden" id="Reisende_1__NameDesReisenden" name="Reisende[1].NameDesReisenden" type="text" value="" /> 
                            <span class="required">*</span>
                            </td><td>
                            <span class="field-validation-valid" data-valmsg-for="Reisende[1].NameDesReisenden" data-valmsg-replace="true"></span>
                        </td>
                    </tr>
                    <tr>
                        <td colspan ="3"><input data-val="true" data-val-number="Das Feld &quot;ProductVariantExtensionId&quot; muss eine Zahl sein." id="Reisende_1__ProductVariantExtensionId" name="Reisende[1].ProductVariantExtensionId" type="hidden" value="40140" /> 
                            </td>
                    </tr>

akzeptierte Antworten

  1. Hallo apfelsine,

    Es ist bestimmt irgend was kleines. Aber ich komme nicht drauf. Ich bin für jeden Tipp dankbar.

    spontan fällt mir gerade nur auf, dass Du mehrfach getElementByName schreibst, die Funktion heißt aber getElementsByName().

    Gruß, Dennis

    1. Hallo Dennis,

      ja das war definitiv ein Fehler danke. :-) Nur für den Text in der Textbox scheint dieser Ansatz falsch zu sein. Es scheitert scheinbar schon beim auslesen der Werte.

      var NameDesReisenden = document.getElementsByName(name).firstChild.nodeValue;
      

      Wie kann ich den Text in der Textbox auslesen/ändern. Es ist zum Haare raufen. Ich finde das jedes Mal nicht.

      1. Hi,

        var NameDesReisenden = document.getElementsByName(name).firstChild.nodeValue;
        

        getElementsByName() liefert eine Collection zurück. Daraus mußt Du erst mal ein Element holen, z.B. das an Position 0:

        var NameDesReisenden = document.getElementsByName(name)[0] 
        

        bevor Du auf dessen Kinder zugreifen kannst. Die Collection selbst kennt kein firstChild.

        Du solltest Dich auch mit der Console Deines Browsers vertraut machen, darin stehen Fehlermeldungen, die meist hilfreich sind, oder mit dem Entwicklertool (Firebug im Firefox o.ä.).

        cu,
        Andreas a/k/a MudGuard

        1. Hallo Andreas,

          ja ich benutze das selten, deshalb habe ich daran nicht gedacht. Das es eine Collection ist hatte ich nicht realisiert. Danke :-)

        2. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

          ja!

          nur, weil es gerade hinein passt, mal gefragt:

          gibt es bei JavaScript auch sowas wie "Elements::getNodePath()"

          Das finde ich in der PHP-DomDocument-Klassensammlung ganz praktisch. Die ist zwar sonst recht einfach, aber die Methode hat was ;-)

          Fehlermeldungen, die meist hilfreich sind, oder mit dem Entwicklertool (Firebug im Firefox o.ä.).

          cu,
          Andreas a/k/a MudGuard

          Spirituelle Grüße
          Euer Robert
          robert.r@online.de

          --
          Möge der wahre Forumsgeist ewig leben!
          1. Hallo robertroth,

            gibt es bei JavaScript auch sowas wie "Elements::getNodePath()"

            Nicht eingebaut. Aber Firebug kann das, du könntest dir angucken, wie die das gemacht haben.

            Edit: von StackOverflow (sorry, hatte vergessen den Link zu setzen) LG,
            CK

            1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

              ja!

              gibt es bei JavaScript auch sowas wie "Elements::getNodePath()"

              Nicht eingebaut. Aber Firebug kann das, du könntest dir angucken, wie die das gemacht haben.

              Edit: von StackOverflow (sorry, hatte vergessen den Link zu setzen)

              Danke für die Info und die Tipps.

              Spirituelle Grüße
              Euer Robert
              robert.r@online.de

              --
              Möge der wahre Forumsgeist ewig leben!
      2. Ich habs gefunden

        var NameDesReisenden = document.getElementsByName(name)[0].value;
        

        so funktioniert es....

      3. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

        ja!

        ja das war definitiv ein Fehler danke. :-) Nur für den Text in der Textbox scheint dieser Ansatz falsch zu sein. Es scheitert scheinbar schon beim auslesen der Werte.

        var NameDesReisenden = document.getElementsByTagName(name)[0].nodeValue;
        

        Spirituelle Grüße
        Euer Robert
        robert.r@online.de

        --
        Möge der wahre Forumsgeist ewig leben!