Chrisi: Zugriff auf input Array?

Hallo Forumler,

ich komme nicht voran, eigentlich eine ganz einfache Sache:

<form name="myform">
   <input type="hidden" name="name[a]" value="1" />
   <input type="hidden" name="name[b]" value="2" />
   <input type="hidden" name="other[a]" value="1" />
   <input type="hidden" name="other[b]" value="2" />
</form>

Ich möchte jetzt alle Werte & den Schlüssel aus dem Array "name" auslesen um damit dann weiter arbeiten zu können:

var data = document.forms['myform'].elements['name'];
for(var i=0;data[i];i++){
   alert(data[i].value);
}

Ausser einem undefined bekomme ich aber kein brauchbares Ergebnis. Ich schätze ich greife schon falsch auf das hidden Element zu.

Hat da jemand einen Tipp für mich wie ich es richtig lösen kann?

Danke für eure Zeit & Viele Grüße
Chrisi

  1. Hi,

    <form name="myform">
       <input type="hidden" name="name[a]" value="1" />
       <input type="hidden" name="name[b]" value="2" />
       <input type="hidden" name="other[a]" value="1" />
       <input type="hidden" name="other[b]" value="2" />
    </form>

    var data = document.forms['myform'].elements['name'];

    Ausser einem undefined bekomme ich aber kein brauchbares Ergebnis.

    Natürlich. *Keines* der gezeigten Inputfelder hat den Namen "name".

    MfG ChrisB

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
    1. Hi

      Natürlich. *Keines* der gezeigten Inputfelder hat den Namen "name".

      Ok, nur bleibt jetzt die Frage wie ich innerhalb des Formulares einen Array mit hidden Feldern aufbauen kann:

      name="name[key]" ...

      Kannst du mir hier noch etwas auf die Sprünge helfen?

      Gruß, Chrisi

      1. Du gibst einfach den hidden inputs den selben Namen, somit bilden diese automatisch das Array. [] brachst du er um es dann per Javascript auszulesen.

        also zb.

        <input type="hidden" name="feld" value="1" />
        <input type="hidden" name="feld" value="2" />
        <input type="hidden" name="feld" value="3" />
        <input type="hidden" name="feld" value="4" />

        ergibt automatisch ein Array das dann über Javascript zb. dann über feld[x] abgefragt werden kann.

        Grüße.

  2. Hallo!

    Probiere mal:

      
     <form name="myform">  
        <input type="hidden" name="other1" value="1" />  
        <input type="hidden" name="other1" value="2" />  
        <input type="hidden" name="other2" value="1" />  
        <input type="hidden" name="other2" value="2" />  
     </form>  
    
    

    und dann

      
    var data = document.forms['myform'].elements['other1'];  
    for(var i=0;data[i];i++){  
       alert(data[i].value);  
    }  
    
    

    Ungetestet und gerade nur "erste Idee".

    Grüße.

    1. Hi

      danke für die Hilfe.

      <input type="hidden" name="other1" value="1" />
          <input type="hidden" name="other1" value="2" />

      Hierbei fehlt mir leider der Key für den Array. Ich muss die Daten per Javascript wieder zusammeführen und benötige jeweils einen Array mit Key & Value ...

      Ich bin mir nicht sicher ob das überhaupt funktioniert?

      Grüße, Chrisi

      1. Hi,

        Hierbei fehlt mir leider der Key für den Array. Ich muss die Daten per Javascript wieder zusammeführen

        Zu was?

        und benötige jeweils einen Array mit Key & Value ...

        Im name-Attribut hast du nur *einen* Textstring.
        Wenn du in diesem mehrere Informationen unterbringen willst - dann musst du ihn selber "auseinandernehmen".

        Ich bin mir nicht sicher ob das überhaupt funktioniert?

        Ob "es" funktioniert, kommt immer stark darauf an, was "es" eigentlich ist.

        MfG ChrisB

        --
        Light travels faster than sound - that's why most people appear bright until you hear them speak.
      2. Na das gibt die Reihenfolge vor. 1. Input im Text ist [0], 2. Input im Text ist [1], etc.

        Abfragen geht ja dann wie du schon geschrieben hast über

        var data = document.forms['myform'].elements['other1'];
        for(var i=0;data[i];i++){
           alert(data[i].value);
        }

        den Index in Javascript hast du ja dann in Form von i.

        Grüße.